PHP-fpm , Nginx exec在使用时.PHPfiles() shell_exec() system()可以在命令行下正常工作。
例如,当运作良好:
<?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共享
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] 举报,一经查实,本站将立刻删除。