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

时间:2013-07-02 07:00:46

标签: php

我需要知道,如果我通过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的失败或错误词,但我认为它不可靠。

提前致谢!

2 个答案:

答案 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如果错误