我正在尝试在nginx服务器上运行PHP命令text2wave。
问题是命令只是默默地退出而没有按预期工作。它也没有显示任何错误。
以下是代码:
<?php
$result = `/usr/bin/text2wave --help`;
var_dump($result);
如果我通过shell中的php命令运行脚本(作为普通用户),它按预期工作。 但是,如果我通过nginx通过http请求运行它,var_dump将返回NULL (错误日志文件中也没有日志)
感谢您的帮助!
答案 0 :(得分: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');
?>
答案 1 :(得分:0)
我的猜测是你的Web服务器使用的php.ini
配置文件中禁用了shell执行。
尝试打开/etc/php5/fpm/php.ini
文件,找到disable_functions
指令,并确保指令值中存在以下函数的 none :{{1} }
答案 2 :(得分:0)
对任何有同样问题的人......我已经设法找出问题所在。嗯..有点。
我已经切换到apache,它立即开始工作。所以解决方案不是使用nginx
我想这与执行exec命令时nginx运行php的方式有关...
虽然这是一个艰难的决定,但我找不到其他解决办法,只能改为apache ......现在运作良好