2013-07-02 78 views
0

我需要知道如果我通过exec命令调用一个php脚本执行命令,并且由于任何原因导致脚本执行失败,说“找不到文件”,那我该如何找到它。 我有以下命令:如何查找在exec命令中执行的命令是否失败?

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

exec命令返回-1的错误的情况下,但在这种情况下,高管在执行成功即$状态在我的情况下,未来0,但是“PHP testfile.php”命令失败,输出得到testoutput.txt。 但我需要知道的方式,以便我可以在exec后识别它,如果命令失败。 我可以考虑选择阅读testoutput.txt和grep的失败或错误的话,但我不认为这是可靠的。

在此先感谢!

回答

1

你可以通过一个可选的第二个参数接收exec函数的输出结果:

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

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

如果你没有找到通过第二个参数的错误,可以通过命令$尾的/ var在Ubuntu服务器12.10搜索的Apache的错误日志,例如/日志/的Apache2 /错误。日志

让我知道,如果我可以帮助你更多。

+0

我试过了,实际上它的第三个参数是0,在我的情况下,它是一个文件找不到错误 –

+0

所以可能你应该找到apace error或任何其他异常处理方法来追踪它。 – liyakat

+0

你检查过你的apache错误日志吗? – liyakat

1

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

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

$状态= 0,如果没有错误,> 0,如果错误

+0

非常感谢!我需要在echo $!之前使用“&&”.... –