如何忽略 shell_exec 中的错误?

How to ignore errors in shell_exec?

我在 PHP 中得到 shell 命令的输出为

$str = shell_exec("command");

和 运行 终端中的 PHP 脚本。当 shell command return 出现错误时,它将打印在终端上。我怎样才能告诉 shell_exec 到 return 命令只输出而没有任何错误输出?

如果你想忽略你的命令错误,你需要修改你的命令来重定向这样的错误:

some-command > /dev/null 2>&1

您也可以在代码开头这样做:

ini_set( 'display_errors', 0 );
error_reporting( E_ALL );

如果您设置为 0,您将看不到错误,如果您设置为 1,您将看到所有错误

您只需要通过将 stderr 重定向到 /dev/null

来丢弃错误输出
$str = shell_exec("command 2>/dev/null");

非错误 输出 - stdout - 将像以前一样存储到 $str


请注意,您不需要使用 @ 运算符抑制 shell_exec 上的错误或将其包装到 try-catch 块中,因为 shell_exec 不会失败(您没有 PHP 运行时错误)。

要求执行的命令可能会产生错误,上述方法将抑制输出中的错误。

另外 some-command > /dev/null 2>&1 正如其他人所建议的 不是你想要的 (如果我理解正确你的问题)因为那会丢弃错误和 non -错误输出。


A 最后的说明:你可以决定catch/discard stdout and/or stderr.

当然,您必须依赖这样一个事实,即您使用的命令 运行 将常规输出发送到 stdout 并将错误发送到 stderr。如果命令不符合标准(例如将所有内容发送到 stdout),那你就不走运了。