0

以下は、ユーザー xyz のコマンド ラインで正常に機能します。

/opt/local/bin/phantomjs --version
1.9.1

しかし、PHP では、同じユーザー (xyz) で、エラー コード 5 が表示されます。

exec('/opt/local/bin/phantomjs --version', $o, $r)
echo $r

私は MAMP を使用しており、exec() は正常に動作します。誰かがこれをデバッグする方法を知っていれば、私はとてもうれしいです!

4

3 に答える 3

4

私を正しい方向に向けてくれた Amal Murali に感謝します!

これは、mac osx の exec() コマンドで 5 が返されることにも記載されており、DYLD_LIBRARY_PATH の設定を解除することで修正できます。

次のコマンドが機能します。

exec('unset DYLD_LIBRARY_PATH ; /opt/local/bin/phantomjs --version', $o, $r)
echo $r

乾杯、

アルバート。

于 2013-09-25T16:41:52.627 に答える
0

環境変数に問題がある可能性があります。macports に関する一般的な問題は、/opt/local/apache2/bin/apachectl にある macports apachectl の代わりに、OSX に付属する「ストック」apachectl (/usr/sbin/apachectl にある) を使用することです。

ほとんどの場合、ストック バージョンは正しく動作するように見えます。ただし、macports バージョンのみが正しい環境を確立します (つまり、/opt/local/apache2/bin/envvars を使用し、DYLD_FALLBACK_LIBRARY_PATH を正しく設定します。

apache を制御するために実行する場合sudo apachectlは、ストック バージョンの apachectl を実行している可能性があります。

それを削除 (または名前を /usr/sbin/apachectl.orig に変更) し、代わりに macports バージョンにシンボリック リンクすることもできます。

mv /usr/bin/apachectlapachectl /usr/bin/apachectlapachectl.orig
ln /opt/local/apache2/bin/apachectl /usr/bin/apachectl

それでも問題が解決しない場合は、Apache で使用されている (したがって php に渡されている) 環境変数を詳しく調べる必要があるかもしれません。

于 2014-01-11T09:08:51.123 に答える