【问题标题】:php exec and shell_exec not workingphp exec 和 shell_exec 不工作
【发布时间】:2010-11-09 14:34:40
【问题描述】:

我想在我的服务器上运行一个 exe 文件并将输出返回到浏览器屏幕。 exe文件接受一个输入文件,然后在屏幕上返回数据。

为什么这段代码不起作用?

$output = shell_exec('myprogram < INP.DAT');
echo "<pre>" . var_export($output, TRUE) ."</pre>\\n";

它在浏览器屏幕上显示“NULL”。我也尝试过 exec()。它在那里返回“Array()”。

【问题讨论】:

    标签: php shell exec


    【解决方案1】:

    One of the commentsshell_exec 手册页上说:

    注意以下不一致:shell_exec(),如果命令的输出为空,则反引号运算符将不会返回字符串——它们将返回 NULL

    这将与'' 进行严格比较,返回false


    可能是disabled if PHP is in safe mode

    shell_exec()(相当于反引号)
    当 PHP 在安全模式下运行时,此功能被禁用。

    exec()
    您只能在safe_mode_exec_dir 中执行可执行文件。出于实际原因,目前不允许在可执行文件的路径中包含 .. 组件。 escapeshellcmd() 在这个函数的参数上执行。

    您可以使用phpinfo() 函数检查服务器的 PHP 设置。

    【讨论】:

    • 更新,更有希望的发现
    【解决方案2】:

    这应该可行:

    $输出 = 数组(); exec('myprogram

    【讨论】:

    • 但是,exec 函数应该用运行 shell 命令返回的行填充 $output 数组,这样应该可以工作
    【解决方案3】:

    myprogram 可以从默认的 shell 中使用吗?它在特定目录中吗?
    尝试将myprogram &lt; INP.DAT 替换为/full/path/to/myprogram &lt; INP.DAT

    【讨论】:

      【解决方案4】:

      有时这些功能在 php 未处于安全模式时被禁用,您必须在 php.ini 中启用它们

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-03-24
        • 1970-01-01
        • 2011-07-15
        • 2013-05-27
        • 2011-10-28
        • 2014-05-23
        相关资源
        最近更新 更多