proc_open()失败并显示'权限被拒绝'

时间:2012-09-02 00:15:21

标签: php apache centos

我正在尝试使用proc_open()来执行程序并打印结果。但是,我一直得到“权限被拒绝”。已将chmod设置为0777以获取脚本和可执行文件,但无济于事。

ini_get('safe_mode')是假的。

可能出现什么问题?

我正在使用CentOS,Apache和PHP 5.3.3。

2 个答案:

答案 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功能)