微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-fpm不能运行exec,system,shell_exec,只有CLI

PHP-fpm , Nginx exec在使用时.PHPfiles() shell_exec() system()可以在命令行下正常工作。

例如,当运作良好:

#PHP myPHP.PHP

myPHP.PHP包含:

<?PHP exec('ping -c 3 google.com',$output); print_r($output); ?>

但是,如果我把我的浏览器http://localhost/myPHP.PHP ,它不再工作。

执行function。 有没有办法回到主程序?

Apache Ant:当ant进程终止时,终止由<exec>启动的进程

使用exec()系列运行“cd”命令

当它定义的程序作为parameter passing时execl不工作

PHP exec()命令不会使用sendkeys启动python脚本

有任何想法吗? 我编辑

我做了一个文件内容如下:

#cat info.PHP <?PHP if(function_exists('exec')) { echo "exec is enabled"; } PHPinfo(); ?>

在我的浏览器中,打印

exec已启用,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"; } ?>

在我的浏览器中,打印

经常这样做

我不想知道我是否在监狱里吗?

在我的PHP ini

#cat /etc/PHP-5.5.ini

safe_mode没有显示,或ON或OFF。 根本不存在

“执行”之后有没有可能发信号通知处理程序?

在Windows上的PHP exec – PHP cwd是一个Windowsnetworking共享

后台运行一个进程c

fork-exec中的copy-on-write如何工作?

POSIX:你如何确定自己的进程的文件映像,以便自己执行?

我认为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中发出这个命令来找到它

编辑

<?PHP exec('/sbin/ping -c3 google.com',$output); print_r($output); ?>

在OpenBSD上,认情况下,PHP-fpm被chrooted。 这可能是你看到它在cli而不是web上工作的原因。

你有两个解决方案。 禁用chroot(注释/etc/PHP-fpm.conf的行chroot = /var/www )或修复可能遇到的问题。

ping的静态编译版本驻留在/bin/ping (从chroot里面)。 你需要在chroot里拷贝/etc/hosts和/etc/resolv.conf来解析主机的名字(就像你试图ping谷歌一样)。 您计划调用的所有其他系统命令也必须在chroot中(以及它们的共享库或静态编译)复制。

使用ldd(1)找出你需要的库。 根据你想要达成的目标,这可能是一件乏味的工作。

其他用户指出,exec,system和shell_exec可能被禁用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐