我目前正在尝试使用php设置推送通知服务器。我有一些代码,如果我在命令行上运行它的工作原理。但是,当我通过Web浏览器访问相同的php文件来测试它给我一个权限被拒绝错误。
可能导致这种情况的原因,我相信apache一定有问题,但我不知道是什么。
编辑: 我认为这是一个SELinix问题,因为当我尝试运行脚本时,这些错误会出现在审计日志中。
type=AVC msg=audit(1348856835.712:48079): avc: denied { name_connect } for pid=587 comm="httpd" dest=2195 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket
type=SYSCALL msg=audit(1348856835.712:48079): arch=40000003 syscall=102 success=no exit=-13 a0=3 a1=bfb8c910 a2=4514ad8 a3=10 items=0 ppid=584 pid=587 auid=0 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=2395 comm="httpd" exe="/usr/sbin/httpd" subj=unconfined_u:system_r:httpd_t:s0 key=(null)
答案 0 :(得分:1)
事实证明,服务器关闭了SELinux boolean httpd_can_network_connect。一旦我打开它,脚本按预期工作。
答案 1 :(得分:0)
这几乎肯定是因为您的计算机上的apache(或nobody)用户没有足够的权限来执行php脚本应该执行的操作。你在谈论服务器端的权利吗?如果是这样,请删除那些苹果和iOS标签,因为它们无关紧要。
答案 2 :(得分:0)
您的VHOST配置是什么?您是否允许访问DocRoot目录?示例配置如下:
<VirtualHost *:80>
ServerName your.server.com
DocumentRoot /var/www/
<Directory /var/www/>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>