exec php が実行できない問題の解決策: 1. yii ファイルの最初の行を変更して、php インタープリターを直接指定します; 2. exec 呼び出しメソッドを変更して、php インタープリターを直接指定します。
#この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、Dell G3 コンピューター。
php exec が実行できないのはなぜですか?
スケジュールされたタスクがあります。OSS バックグラウンド管理ページでクリックして開始したいのですが、いくつかの方法を試しましたが、システムやシステムに関係なく、うまくいきません。 exec (シェルコマンドラインで手動で実行しても問題ありません) ); 最初は、Web サーバーの nginx ユーザーの権限の問題を疑いましたが、後で環境変数が php 実行可能ファイルを見つけることができないことがわかりました (nginx ユーザーが原因で、は制限付きユーザーです);
exec("/home/app/example/api/app/yii demand/virtual {$id}", $output); print_r($output);
以上 スクリプト実行後はArray()
のみが出力されます当然業務コードは実行されません(ビジネスコードの1行目が出力されます);
// http://oss.example.com/index.php?r=demand/demand-ip/msg&id=1929 点击后执行 exec("/home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
上記のスクリプトを実行するとエラーが出力されます: Array ([0] => /usr/bin/env: php : そのようなファイルまたはディレクトリはありません )
;
/usr/bin/env: php
この文は yii ファイル #!/usr の最初の行から来ています/bin/env php
、これは yii ファイルを実行する php スクリプト インタプリタの場所を示すことを目的としていますが、エラー出力は /usr/bin /env: php: No such file or directory## です。 # php が見つからないことを意味します;
PHP ビデオ チュートリアル "]
解決策 から
# !/usr/local/bin/ に変更されます。 php、つまり、php インタープリターの場所を直接指定します (コードがリリースされたときに変更することもできます);
exec("/usr/local/bin/php /home/app/example/api/app/yii demand/virtual {$id} 2>&1", $output); print_r($output);
$cmd = '/usr/local/bin/php /home/app/example/yapp/yii demand/finish 2057'; $pid_file = 'msgrepeat.pid'; $exec_cmd = sprintf("%s > /dev/null 2>&1 & echo $! > %s & cat %s", $cmd, $pid_file, $pid_file); exec($exec_cmd);/usr/bin/envについて(移植性が高い?)
以上がexec php が実行できない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。