我已经在新鲜的centos7上安装了httpd和php,并将一些文件放到/ var / www / html中,包括我写的安装脚本。 该脚本需要写入/ var / www / html目录中的configuration文件。 我创build了一个空的configuration文件,并将其转换为apache:apache。 然而试图用写权限来打开这个文件总是会给出错误:
fopen(/var/www/html/config-local.php): failed to open stream: Permission denied
做研究我读了这句话:“为了达到一个文件,所有的父目录必须是可读的。” 所以我检查了他们。 /,/ var,/ var / www和/ var / www / html都是可读的。
那么这里发生了什么? 看来,apache用户是一种特殊的限制用户,因为testing与标准用户相同的场景工作正常。
这可能是一个SELinux的权限问题。 /var/log/audit/audit.log应该能够确认。
SELinux上下文可能是system_u:object_r:httpd_sys_content_t:s0 ,但应该是system_u:object_r:httpd_sys_rw_content_t:s0 。 这可以通过chcon来改变。
我也不乐意在你的web服务器的DocumentRoot中有一个configuration文件。 我可能会误认为你没有提供足够的细节,但如果你没有改变默认值,情况就是这样。