如何查找exec命令中执行的命令是否失败


How to find if command executed in exec command fails?

我需要知道,如果我通过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中。但我需要知道方法,这样如果命令失败,我就可以在exec之后识别它。我可以考虑阅读testoutput.txt和grep来查找fail或error单词,但我认为这不可靠。

提前感谢!

您可以通过传递可选的第二个参数来接收exec函数的输出结果:

因此,您可以使用第三个参数执行exec(),然后检查它是否为非零错误条件。

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

如果你没有通过第二个参数找到错误,你可以搜索apache的错误日志,例如在Ubuntu Server 12.10中,通过命令$tail/var/log/apache2/error.log

如果我能帮你更多的忙,请告诉我。

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

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

$status=0(如果没有错误),>0(如果有错误)