我需要知道,如果我通过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的失败或错误词,但我认为它不可靠。
提前致谢!
答案 0 :(得分:2)
您可以通过传递可选的第二个参数来接收exec函数的输出结果:
所以你可以用第3个arg执行exec(),然后检查错误条件是否为非零。
exec("blah blah blah", $output, $result);
if($result > 0)
{
die('error message here');
}
如果你没有通过第二个参数找到错误,你可以通过命令$ tail /var/log/apache2/error.log
请告诉我是否可以为您提供更多帮助。
答案 1 :(得分:1)
http://php.net/manual/en/function.exec.php
exec(sprintf("%s > %s 2>&1 & echo $!", $cmd, $outputfile),$pidArr, $status);
如果没有错误,$ status = 0,> 0如果错误