PHP exec() 関数呼び出しを使用して、コマンド ライン プログラムが Apache 環境で動作しない理由を理解しようとしましたが、理解できませんでした。シナリオは次のとおりです。
CentOS 32 ビットに Apache 2.x および PHP 5.3.3 をインストール
exec("./ imageManipuator
testImage.jpg 512 512 >& output.log &");
exec() 関数は、指定されたパラメーターを使用してプログラムを呼び出して要求を処理し、出力をすべて「&」で定義されたバックグラウンド プロセスでファイル「output.log」にリダイレクトする必要があります。
ログを確認すると、プログラムはプログラムの 1/4 を実行し、理由がわからずに終了します。
PHPインタラクティブシェル呼び出しを介してPHPファイルを実行しようとしました:
$ php myScript.php
プログラムの実行が完全に終了しました!!! それは私に次のように感じさせます:
プログラムの実行を完全に禁止する Apache/PHP 構成の何が問題になっていますか。
おそらく許可の問題ですか?ログインしているユーザーを管理者ユーザーとして変更しようとしましたが、何も変わりませんでした。
おそらくメモリの問題でしょうか?メモリ制限に達した場合、警告または通知が表示されるべきではありませんか? 私はこれが問題であることを確認していませんか?
それが私の問題です。PHP Interactive シェル経由で同じファイルを呼び出すときに同じスクリプトが機能するため、関数 exec() を使用してバックグラウンドでプログラムを正しく実行していることはわかっています。プログラムを完全に実行できない Apache/PHP 構成の何が問題なのですか?
私は自分のアイデアを使い果たしたので、どんな提案もおまけです。