PHP スクリプト内でシェル コマンドを実行しようとしていますが、exec は 126 コードを返します。これは、「呼び出されたコマンドを実行できません」という意味です (アクセス許可の問題またはコマンドが実行可能ファイルではありません)。しかし、最も面白いのは、同じ php スクリプトを cli で実行すると、うまく動作することです。どうしたの?
環境に問題があるのではないでしょうか?Apacheで実行すると、実行可能ファイルへの絶対パスを使用しないと127コードが返されるためです(cliの下では、ファイル名だけを使用してもうまく機能し、0を返します)。ファイルは/usr/localに保存されます/bin フォルダー。
アップデート:
コメントで尋ねられたように、コードの例を示しますが、特別なことは何もありません。
この作品は cli では正常に動作しますが、apache では動作しません ( $retval
127 に等しくなります):
$output = array();
$retval = 0;
exec( "myexecutablefile /full/path/to/someotherfile.js", $output, $retval );
echo implode( PHP_EOL, $output );
このコードは戻ります$retval = 126
$output = array();
$retval = 0;
exec( "/usr/local/bin/myexecutablefile /full/path/to/someotherfile.js", $output, $retval );
echo implode( PHP_EOL, $output );