2011-12-01 148 views
1

我試圖將文件假脫機連接到使用PHP連接到服務器的打印機。使用LP命令的PHP exec在Mac OS X上失敗

我在PHP中使用EXEC發送一個命令,例如lp -d 'Brother_QL-570' '/Users/user_name/Documents/wwwroot/mmsprint/mmsUw8Vv9,得到的返回值爲5。該命令在終端窗口中正常工作。

如果我發送ls,whoami等,該命令執行正常。

whoami and ls住在/ bin,所以我創建了一個符號鏈接爲lp,並沒有什麼區別。

也試過/usr/bin/lp這也沒有工作。我正在拉我留下的這些小毛髮。

安全模式關閉。 PHP和我的終端環境之間的路徑變量相同。 我在Lion上運行MAMP。

FWIW,命令cat /Users/user_name/Documents/wwwroot/mmsprint/mmswKJqYK | lp -d Brother_QL-570返回值爲133

這是我的代碼:

$temp_file = tempnam("./", 'mms'); 
$pdf->Output($temp_file, "F"); 
$pdf->Close(); 
$cmd = "lp -d 'Brother_QL-570' '".$temp_file."'"; 
exec($cmd,$output,$retval); 
error_log("-----cmd=".$cmd."\n", 3, "printCard.log"); 
foreach ($output as $a) { 
    error_log("-----output=".$a."\n", 3, "printCard.log"); 
} 
error_log("-----retval=".$retval."\n", 3, "printCard.log"); 

有什麼想法?我錯過了什麼?這應該很容易。哎呀!

+0

請不要恢復已完成的修改以提高您帖子的可讀性。 –

回答

0

該命令的輸出是什麼?

很可能PHP用戶(apache可能)沒有權限打印東西。將該用戶添加到lp組。 (假設mac在這方面的工作類似於unix。)

+0

他正在運行MAMP,所以我假設apache用戶沒有被使用。 –

+0

@TomvanderWoerdt Macs沒有apache進程作爲不同的用戶運行? – Ariel

+0

@TomvanderWoerdt根據http://labs.hoffmanlabs.com/node/1329,它是'www'用戶。因此,將'www'添加到組'lp'。 – Ariel

1

原來是MAMP的一個問題。我搜索了「MAMP執行失敗」,並提出了幾個很好的答案。它與庫的兼容性問題。我加了DYLD_LIBRARY_PATH='' &&給鮑勃的叔叔。感謝您的回覆。

0

我找到了一個類似的解決方案,提到使用DYLD_LIBRARY_PATH='' &&。使用這個工作對我來說,所以我試圖找到一個更永久的解決方案,而不是將其包含在我的所有代碼中。我打開了文件/Applications/MAMP/Library/bin/envvars和評論下面兩行了:

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" 
export DYLD_LIBRARY_PATH 

重啓動Apache,這是偉大的工作後!不知道爲什麼這發生在我身上。可能不得不做一些事實,我正在運行2個虛擬主機。

相關問題