【问题标题】:Shell Script - PHP - display errorShell 脚本 - PHP - 显示错误
【发布时间】:2014-05-22 12:22:08
【问题描述】:

我正在使用 PHP 函数 shell_exec() 来执行 Shell 脚本。 当我使用这个(正确的)语法时,它会正常显示输出

echo shell_exec("ls -l");

但是,由于某种原因,如果用户输入了这样的无效命令

echo shell_exec("lsl -l");

默认情况下,它应该在终端上给出错误。但是,它不显示任何内容。有什么方法可以捕捉和显示错误;通过 PHP?

【问题讨论】:

  • 你可以试试echo shell_exec("lsl -l 2>&1");

标签: php bash shell


【解决方案1】:

这是因为错误的输出到STDERR,而shell_exec 只读取STDOUT。最简单的解决方案可能是将STDERR 传递给STDOUT

<?php
echo shell_exec('lsl -l 2>&1');

如果你只想知道命令是否成功,我会使用exec而不是shell_exec,因为你可以得到返回值。

【讨论】:

  • 评论是这么说的:)
【解决方案2】:

来自PHP docs

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

如果您选择使用 exec() 代替,您可以为函数提供第三个参数,该函数将返回参数的输出:

exec ( string $command [, array &$output [, int &$return_var ]] )

如果 return_var 参数与输出参数一起存在,则执行命令的返回状态将写入此变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多