php-fpm
, nginx
使用时执行 .phpfiles()
shell_exec()
system()
在命令行中运行良好。
运作良好的例子:
#php myphp.php
myphp.php
包含:
<?php
exec('ping -c 3 google.com', $output);
print_r($output);
?>
但是如果我在我的浏览器上输入 http://localhost/myphp.php
,它就不再工作了。
有什么想法吗? 我编辑
我创建了一个包含以下内容的文件:
#cat info.php
<?php
if(function_exists('exec')) {
echo "exec is enabled";
}
phpinfo();
?>
在我的浏览器中,打印
exec is enabled, y php info..
我创建了一个包含以下内容的文件:
#cat info.php
<?php
// Check for safe mode
if( ini_get('safe_mode') ){
// Do it the safe mode way
echo "Do it the safe mode way";
}else{
// Do it the regular way
echo "Do it the regular way";
}
?>
在我的浏览器中,打印
Do it the regular way
难道我不想知道自己是否在 jail 里吗?
在我的 php ini 中
#cat /etc/php-5.5.ini
safe_mode 未显示,或 ON 或 OFF。 根本不存在
最佳答案
我认为 exec 和那些功能在您的 php.ini 中被禁用。您可以通过以下方式检查它
if(function_exists('exec')) {
echo "exec is enabled";
} else {
echo "exec is disabled";
}
打开你的 php.ini 并导航到 disable_functions 部分
如果 exec 列在下面,请将其删除。
然后重启php-fpm
。
此外,如果启用了安全模式,则此功能将不可用。您需要禁用它。
编辑
使用完整路径进行 ping。您可以通过在 shell which ping
编辑
<?php
exec('/sbin/ping -c3 google.com', $output);
print_r($output);
?>
关于nginx - php-fpm 不工作 exec、系统、shell_exec,只有 CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29272233/