如何忽略 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
),那你就不走运了。
我在 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
),那你就不走运了。