PHP如何检查shell_exec命令是否执行成功

8

我想要使用 shell_exec 来检查命令是否成功运行。

以下是一个简单的函数:

public static function foo()
{
    $command = "blabla";
    shell_exec($command);
}

编辑,我按照Mister M的建议尝试了这样做:

foreach($commands as $key => $value)
{
    shell_exec($value, $output, $return);
}

我遇到了这个错误:
未定义变量: output
4个回答

10

尝试使用exec

$output = array();//Each line will be assigned to this array if any are generated.
$result1 = exec($command, $output, $return);

if ($return != 0)
{
 // error occurred
}
else
{
 // success
}

我不需要定义 $output 和 $return,对吗? - utdev
你是否正在重定向标准错误?我的意思是在你的$command末尾添加这个:"2>&1",就像这样:"your command 2>&1"。 - Mister M

3

如果您只需要命令的退出代码,应使用exec而不是shell_exec


0
你可以这样做:
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";

并验证输出。

但根据手册:

注意: 当出现错误或程序未产生任何输出时,此函数可能会返回NULL。使用此函数无法检测执行失败。当需要访问程序退出代码时,应使用exec()。

http://php.net/shell_exec


0

这取决于您的命令是否返回任何输出。根据PHP文档:

shell_exec - 通过shell执行命令并将完整输出作为字符串返回

和:

返回值

执行命令的输出或者如果发生错误或命令产生无输出则返回NULL。

注意:当发生错误或程序没有输出时,此函数可能会返回NULL。使用该函数无法检测到执行失败情况,如果需要访问程序退出代码,则应使用exec()。

因此,如果您期望命令的输出显示出来,只需捕获shell_exec函数的返回值即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接