我正在尝试使用proc_open()
来执行程序并打印结果。但是,我一直得到“权限被拒绝”。已将chmod设置为0777以获取脚本和可执行文件,但无济于事。
ini_get('safe_mode')
是假的。
可能出现什么问题?
我正在使用CentOS,Apache和PHP 5.3.3。
答案 0 :(得分:2)
我遇到了相同设置的问题,问题原因是SELinux(默认情况下处于打开状态)阻止httpd执行我的外部程序。您可以通过
将其置于许可模式setenforce permissive
如果你看到同样的问题,现在一切都应该有效。这将持续到您重新启动。
要使更改成为永久更改,请转至/ etc / selinux / config,然后更改:
SELINUX=enforcing
到
SELINUX=permissive
编辑:
好的,我找到了一种不需要关闭SELinux的方法。根据我的理解,问题是httpd有自己的域名,不能触及它之外的东西。因此,最简单的方法是将脚本/程序移动到/ var / www目录树中。
如果无法做到这一点,您可以改为现场更改程序的上下文:
semanage fcontext -a -t httpd_sys_content_t "/path/to/program(/.*)?"
基本上说你的程序属于httpd。
答案 1 :(得分:0)
您必须启用safe_mode并查看您的safe_mode_exec_dir。 你不能在safemode exec dir之外执行。如果你有你的程序在safe_mode_exec_dir内,问题是你的共享主机(有时共享主机禁用exec功能)