我需要知道,如果我通过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(如果有错误)