PHP fopen失败 – 没有权限在写入模式下打开文件

我有一个运行在Fedora 13上的Apache 2.17服务器。我希望能够在一个目录中创build一个文件。

我不能这样做。 每当我尝试用php打开一个文件来写fopen(,'w'),它告诉我,我没有权限这样做。

所以我检查了/ etc / httpd / conf /中的httpd.conf文件。 它说用户apache,组apache。 于是我将整个/ www目录的所有权(chown -R apache:apache。*)改为apache:apache。 我也运行chmod -R 777 *

除了知道这是多么的危险之外,即使我甚至允许公开写作,它实际上仍然给我同样的错误!

检查你的错误日志,它会告诉你这个问题。 我认为这将归结为以下四点之一:
– 为域启用PHP safe_mode。 错误日志将使这个清楚。
– PHP的open_basedir限制是有效的。 再一次,错误日志将使这个清楚。
– 你有错误的文档根目录
– 父目录具有错误的权限。

另外,请尽快更改这些权限。 如果您使用PHP作为apache模块,那么如果您的网站受到攻击,攻击者将能够编写自定义PHP脚本并通过浏览器随意执行。

如果您使用FC13并启用了acl,请考虑使用setfacl而不是chmod -R 777 – 它更安全一些(仅为给定用户指定),并且更容易撤消:
setfacl -R -m user:apache:rwx /path/to/webroot
setfacl -d -R -m user:apache:rwx /path/to/webroot