【发布时间】:2015-04-23 06:10:17
【问题描述】:
在尝试使用 fopen() 时,我在运行 LAMP 堆栈的 Fedora 20 桌面上收到以下错误
警告:fopen(/var/www/html/php/documents/orders.txt):
打开流失败:
第 76 行 /var/www/html/php/processorder.php 中的权限被拒绝
我使用的代码是
$fp = fopen("$DOCUMENT_ROOT/php/documents/orders.txt", 'ab');
orders.txt 拥有以下权限
[root@localhost 文档]# pwd
/var/www/html/php/文档
[root@localhost 文档]# ls -l
共 4 个
-rwxrwxrwx。 1 拜伦网络内容 21 年 2 月 12 日 12:33 orders.txt
我意识到这个问题已经被问过很多次了,但没有一个解决方案对我有用。我是 Linux/Fedora 和 LAMP 的新手,所以如果错误是出于无知,我深表歉意。
编辑:似乎是 SELinux 导致了问题,不确定如何在更改 SELinux 中的设置方面克服这个问题,所以我禁用了它。
要查看是否正在执行 SELinux(我使用的是 Fedora 20),请使用 /usr/sbin/sestatus。
要禁用 SELinux,请在 /etc/selinux/config 中配置 SELINUX=disabled。
【问题讨论】:
-
可能是 www 用户不允许读取其中一些目录,解决方案是
chown www-data:www-data -R /var/www其中第一个 www-data 是用户和第二组 -
@kmlnvm :我没有用户或组 www-data,从 /var/www(包括 www)递归拥有所有文件和目录的用户:组是 byron:web-content。我猜问题出在httpd.conf,这可能吗?此外,apache 是组 web-content 的成员。
标签: php fopen file-permissions lamp fedora20