我是Mac和Apache的新手。我的开发机器我的网站无法访问web根/ images或/ css文件夹下的任何文件。
apache日志出现以下错误:
(13)权限被拒绝:文件权限拒绝服务器访问:
该网站托管在“网站”文件夹下。我在这个文件夹中查看了“获取信息”,似乎“每个人都有读取权限”。是什么赋予了?
谢谢!
答案 0 :(得分:19)
问题是Apache运行的用户与文件的用户所有者不同,而Apache的用户没有读/写/执行权限。在我的情况下,用户是_www
并且是_www
组的成员。
我解决了这个问题,将文件组更改为_www
:
查找apache的用户和组。我用过这个php脚本:
<?php
echo exec('whoami') . '<br>';
echo exec('groups') . '<br>';
?>
使用文件的用户所有者登录。
将文件的用户所有者添加到_www
组。
$ sudo dseditgroup -o edit -a userOwnerOfFiles -t user _www
更改_www
$ chgrp -R _www path/containing/files
更改群组的文件权限
$ chmod -R g+rwx path/containing/files
答案 1 :(得分:2)
解决此问题的另一种方法是在MacOSX中使用扩展属性
chmod + a“_www allow list,read,search,readattr,readsecurity,file_inherit,directory_inherit”/ path / to / document_root
答案 2 :(得分:1)
今天这对我来说很艰难。事实证明,我需要将Web服务器的权限授予整个目录树,直到doc root。
今天我找到了,因为我正在使用虚拟主机并将文件存储在我的用户目录中相当远的树上。
我不想递归地更改Documents目录中的所有数千个文件,所以我只是修改了路径中的每个文件夹。在我的主目录中:
$ chmod 755 Documents
$ chmod 755 Documents/projects
$ chmod 755 Documents/projects/dev
$ chmod 755 Documents/projects/dev/someglamorousclientname/
$ chmod 755 Documents/projects/dev/someglamorousclientname/docroot
答案 3 :(得分:0)
我发现有2件事对我有帮助(我特别想让apache可以访问Downloads文件夹):
在“系统偏好设置”->“安全性和隐私”->“隐私”中,滚动到左侧的“全盘访问”,确保您在底部进行了解锁,然后单击+添加一个应用程序。导航到/ usr / sbin并找到可执行文件httpd
并添加该文件,确保已启用了对磁盘的完全访问。重新锁定首选项
右键单击Finder中的特定文件夹,然后选择“获取信息”,然后在“共享和权限”下,允许“每个人”用户访问(或者,如果您想提高安全意识,则可能仅允许“ _www” “用户-但我没有对此进行测试。
那为我解决了