Php检查shell_exec命令是否成功

时间:2016-09-30 12:01:14

标签: php shell command-line command shell-exec

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

简单功能:

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

编辑,我尝试了M先生的建议:

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

我收到了这个错误:

  

未定义的变量:输出

4 个答案:

答案 0 :(得分:3)

尝试使用exec

exec($command, $output, $return);

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

答案 1 :(得分:1)

如果只需要命令的退出代码,则应使用PHP docs代替shell_exec

答案 2 :(得分:0)

你可以这样做:

$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";

并验证输出。

但根据手册:

  

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

http://php.net/shell_exec

答案 3 :(得分:0)

这取决于您的命令是否返回任何输出。根据{{​​3}}:

  

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

返回

  

返回值

     

执行命令的输出,如果发生错误,则为NULL   该命令不产生输出。

     

注意:此函数可在发生错误或返回时返回NULL   程序不产生输出。无法检测执行   使用此功能失败。访问时应使用exec()   程序退出代码是必需的。

因此,如果你可以期望命令中的输出出现,只需捕获shell_exec函数的返回值。