我在 PHP 中得到 shell 命令的输出为
$str = shell_exec("command");
并在终端中运行 PHP 脚本。当 shell 命令
返回错误时,它会打印在终端上。我如何告诉 shell_exec
只返回命令输出而不返回任何错误输出?
最佳答案
您只需将 stderr
重定向到 /dev/null
即可丢弃错误输出
$str = shell_exec("command 2>/dev/null");
非错误输出 - stdout
- 将像以前一样存储到 $str
中。
请注意,您不需要使用 @
运算符抑制 shell_exec
上的错误或将其包装到 try
- catch
block ,因为 shell_exec
不会失败(您没有 PHP 运行时错误)。
要求执行的命令可能会产生错误,上述方法将抑制输出中的错误。
还有 some-command >/dev/null 2>&1
其他建议不是你想要的(如果我理解正确你的问题)因为那会丢弃错误和非错误输出。
最后说明:您可以决定捕获/丢弃stdout
和/或stderr
。
当然,您必须依赖这样一个事实,即您正在运行的命令将常规输出发送到 stdout
并将错误发送到 stderr
。如果命令不符合标准(例如,将所有内容发送到 stdout
),那你就不走运了。
关于php - 如何忽略 shell_exec 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44201896/