2011-12-01 15 views
1

PHPを使用してサーバに接続されたプリンタにファイルをスプールしようとしています。Mac OS XでLPコマンドを使用するPHP execが失敗する

lp -d 'Brother_QL-570' '/Users/user_name/Documents/wwwroot/mmsprint/mmsUw8Vv9などのコマンドをPHPでEXECを使用して送信し、戻り値は5です。このコマンドはターミナルウィンドウで正常に動作します。

lswhoamiなどを送信すると、コマンドは正常に実行されます。

lsが/ binにあるので、lpのシンボリックリンクを作成しても違いはありません。

/usr/bin/lpも試してみましたが、どちらもうまくいきませんでした。私はこの上に何も出ていない小さな髪を引っ張っています。

セーフモードがオフです。パス変数は、PHPと私の端末環境で同じです。 私はLAMPで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 Macは別の​​ユーザーとして実行されるApacheプロセスを持っていませんか? – Ariel

+0

@TomvanderWoerdt http://labs.hoffmanlabs.com/node/1329によると、それは 'www'ユーザです。グループ 'lp'に' www'を追加してください。 – Ariel

1

MAMPでは問題があることが判明しました。私は "MAMPのexec失敗"グーグルといくつかの良い答えを思い付いた。ライブラリとの互換性に問題があります。コマンドにDYLD_LIBRARY_PATH='' &&を追加し、Bobの叔父を追加しました。返信をありがとう。

0

私はDYLD_LIBRARY_PATH='' &&を使用することについて述べたものと同様の解決策を見つけました。これを使用して私のために働いたので、私はすべての私のコードでこれを含めるよりも、より永続的な修正を見つけることを試みた。私は、ファイル/Applications/MAMP/Library/bin/envvarsを開いて、以下の2行をコメントアウト:

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

Apacheを再起動した後、これはGREATを働いています!なぜこれが私に起こっているのか分かりません。私は2つの仮想ホストを実行しているという事実で何かをしなければならないかもしれません。

関連する問題