10

我正在尝试在 nginx 服务器上的 PHP 中运行 shell 命令 text2wave。

问题是命令只是静默退出而没有正常工作。它也没有显示任何错误。

这是代码:

<?php
$result = `/usr/bin/text2wave --help`;
var_dump($result);

如果我在 shell 中通过 php 命令运行脚本(作为普通用户),它会按预期工作。但是,如果我通过 nginx 通过 http 请求运行它,则 var_dump 返回 NULL(错误日志文件中也没有日志)

谢谢你的帮助!

4

3 回答 3

3

尝试:

<?php
function sys_cmd($cmd)
{   
    $hd = popen($cmd,"r") or die('function disabled');
    while (!feof($hd))
    {
        $rs .= fread($hd,1024);     
    }
    pclose($hd);
    return $rs;
}
echo sys_cmd('ls -l');
?>
于 2014-03-03T11:57:42.427 回答
0

对于任何有同样问题的人......我已经设法找出问题所在。嗯..有点。

我已经切换到 apache,它立即开始工作。所以解决方法是不使用nginx

我猜这与 nginx 在执行 exec 命令时运行 php 的方式有关......

虽然这是一个艰难的决定,但我没有找到其他解决方案,只能更改为 apache……现在效果很好

于 2014-03-12T21:38:33.447 回答
0

php.ini我的猜测是您在Web 服务器使用的配置文件中禁用了 shell 执行。

尝试打开/etc/php5/fpm/php.ini文件,找到disable_functions指令,并确保指令的值中存在以下函数:shell_exec,exec,passthru,system

于 2013-07-26T14:08:50.033 回答