1

exec コマンドを使用して php スクリプト実行コマンドを呼び出し、何らかの理由で「ファイルが見つかりません」という理由でスクリプトの実行が失敗した場合、どうすればそれを見つけることができるかを知る必要があります。次のコマンドがあります:

    $cmd="php testfile.php" ;
    $outputfile="testoutput.txt";
    exec(sprintf("%s > %s 2>&1 & echo $!", $cmd, $outputfile),$pidArr, $status);

exec コマンドはエラーの場合は -1 を返しますが、この場合は exec が正常に実行されています。つまり、私の場合は $status が 0 になりますが、「php testfile.php」コマンドは失敗し、出力は testoutput.txt に取得されます。しかし、コマンドが失敗した場合に実行後にそれを特定できるように、方法を知る必要があります。testoutput.txt を読み取り、失敗またはエラー ワードを grep するオプションを考えることができましたが、信頼できるとは思いません。

前もって感謝します!

4

2 に答える 2

2

オプションの 2 番目のパラメーターを渡すことで、exec 関数の出力結果を受け取ることができます。

そのため、その 3 番目の引数で exec() を実行し、エラー状態でゼロでないかどうかを確認できます。

exec("blah blah blah", $output, $result); 
if($result > 0) 
{ 
   die('error message here'); 
}  

その 2 番目のパラメーターでエラーが見つからない場合は、コマンド $ tail /var/log/apache2/error.log を使用して、たとえば Ubuntu Server 12.10 で apache のエラー ログを検索できます。

もっとお手伝いできることがあれば教えてください。

于 2013-07-02T07:08:54.337 に答える
1

http://php.net/manual/en/function.exec.php

exec(sprintf("%s > %s 2>&1 & echo $!", $cmd, $outputfile),$pidArr, $status);

エラーがない場合は $status=0、エラーがある場合は > 0

于 2013-07-02T07:05:18.833 に答える