wai*_*933 23 apache-http-server osx-snow-leopard macos
我在 Mac OS X 10.6 的系统偏好设置中设置了网络共享,然后单击它给我的链接。不幸的是,Apache 给了我这个 403 错误:
禁止的
您无权访问此服务器上的 /~myusername/index.html。
访问日志显示: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210
错误日志显示: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/
奇怪的是,访问http://localhost工作正常。只是我遇到了两个用户文件夹的问题,另一个比我的系统升级新的用户文件夹工作正常。
我以前在 Leopard 的机器上使用过这个,所以我把所有东西都改成~/Sites
了 755,这没有任何好处。有什么建议?我想我已经对我的机器做了一些导致这种情况的事情,因为我无法想象苹果会在这样的事情上搞砸。
我确实用这些说明设置了 PEAR ,但我不知道这是否可能是它的原因。
Dan*_*eck 22
Apple 有针对此问题的支持文档。解决此问题涉及创建一个文件/etc/apache2/users/yourusername.conf
(您的用户名是帐户短名称,例如danielbeck
- 通常是您的主文件夹的名称/Users
),其中包含以下内容:
<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Run Code Online (Sandbox Code Playgroud)
之后,运行sudo chown root:wheel /etc/apache2/users/yourusername.conf
并重新启动 Apache。
Spi*_*iff 14
要让 Apache 查看该文件,运行 Apache 的用户(可能www
或_www
)必须有权访问这些用户的站点目录。对 的内容具有读/执行访问权限~/Sites
是不够的,因为必须允许它从/
路径向下遍历到~/Sites
. 因此,请确保/
、/Users
、/Users/myusername
和/Users/myusername/Sites
都至少具有a+x
权限(目录上的 eXecute 位允许该用户类遍历目录,即使不允许读取访问)。
ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites
Run Code Online (Sandbox Code Playgroud)
如果这些目录中的任何一个没有显示最后一x
组(“其他”的那个),那么使用类似的东西chmod a+x ...
为该目录设置它。
如果这些目录中的任何一个的 ACL 显示用户www
已被明确拒绝访问,则使用适当的参数chmod
来修复 ACL。
作为参考,我刚刚处理了这个问题,这里的任何答案都不适用于我的具体情况。我正在配置虚拟主机,但更重要的是,我需要我的 htaccess 文件才能真正工作。
我将 /etc/apache2/users/USERNAME.conf 文件中的“AllowOverride None”更改为“AllowOverride All”,并且我的所有站点都开始被禁止。
我把它改回来,然后只对我的 httpd-vhosts.conf 文件中的一个站点进行了更改,并且只有那个站点被禁止。
查看日志并发现问题在于 url 重写和缺少 FollowSymLinks 后,我回到了 USERNAME.conf 文件。我将“AllowOverride None”切换为“AllowOverride All”并在下一行添加了“Options +FollowSymLinks”。
事情开始起作用了。我来自在 Windows 上使用 xampp,它有很多这些设置已经为像我这样的傻瓜设置了服务器范围。