我有一个在 Fedora 13 上运行的 Apache 2.17 服务器。我希望能够在目录中创建文件。
我无法做到这一点。每当我尝试使用 php 打开文件并写入 fopen(,'w') 时,它都会告诉我我没有权限这样做。
所以我检查了 /etc/httpd/conf/ 中的 httpd.conf 文件。它显示用户 apache,组 apache。因此,我将整个 /www 目录的所有权 (chown -R apache:apache .*) 更改为 apache:apache。我还运行了 chmod -R 777 *
除了知道这有多么危险之外,它实际上仍然给我同样的错误,即使我允许公开写入!
答案1
检查错误日志,它会告诉你问题所在。我认为问题可以归结为以下四个原因之一:
- 域启用了 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
。