在Mac OS X Localhost上出现403禁止错误


22

我在Mac OS X 10.6的“系统偏好设置”中设置了“ Web共享”,然后单击它给我的链接。不幸的是,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 ,但我不知道是否可能是它的原因。


抱歉,这是一个愚蠢的问题,但是您到底要使用哪个URL?我问是因为URL“ /~myusername/index.html”是一个奇怪的数字-它应该是“〜myusername / index.html”,或者应该是“ localhost /〜myusername / index.html ”,或其他类似。简单地从/开始,然后添加〜myusername听起来很有趣。除了回答(或代替回答),您还可以进入Console.app(/Applications/Utilities/Console.app)并找到apache2 access_log和error_log。向上拉,也许清除显示,然后重试您的URL,以查看错误日志告诉您什么。
Michael H. 2010年

@khedron:URL为localhost /〜myusername / index.html,但错误显示/~myusername/index.html部分
waiwai933 2010年

好的,只是检查一下。apache日志在控制台(console.app)中说什么?
Michael H.

@khedron:我在问题中张贴了访问和错误日​​志。还有另一个吗?
waiwai933

1
我和你有同样的问题,我只是做:chmod 777 / Applications / XAMPP / htdocs / myusername,它对我
有用

Answers:


22

苹果公司有针对此问题的支持文档。修复该问题涉及创建文件/etc/apache2/users/yourusername.confyourusername是帐户短名称,例如danielbeck-它通常是在你的主文件夹的名称/Users),其内容如下:

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

之后,运行sudo chown root:wheel /etc/apache2/users/yourusername.conf并重新启动Apache。


并重新启动您的Apache,只需sudo apachectl restart在您的终端中执行即可。
2013年

15

为了让Apache查看该文件,以Apache身份运行的用户(可能是www_www)必须有权访问这些用户的Sites目录。读取/执行对的内容的访问~/Sites是不够的,因为必须允许它从/到的路径遍历~/Sites。所以一定要确保//Users/Users/myusername,并且/Users/myusername/Sites都至少有a+x权限(在目录上执行位允许用户类来遍历目录,即使是不允许读存取)。

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

如果这些目录中的任何一个未显示最后一x组(“其他”目录),则使用类似chmod a+x ...的方法为该目录设置。

如果这些目录中的任何一个的ACL显示用户www被明确拒绝访问,请使用适当的参数chmod来修复ACL。


所有这些目录都设置了execute位,但是我不知道如何检查特定用户是否被拒绝访问。
waiwai933 2010年

这就是“ ls -lde”中的“ e”的含义。它列出了每个文件的ACL(如果有)。

2
将/ Users / myusername的权限更改为chmod 755对我来说解决了这个问题。
标记

此命令是否不授予_www用户访问您的根目录以及/ Users目录等的权限?那不可能是正确的,是吗?所有这些安全漏洞可以在一个文件夹中共享页面吗?此行为记录在某处吗?
汤姆·连扎

在回复我自己的评论时,我找到了这个答案(serverfault.com/a/293063/14970),它确实提供了有关此行为的可靠文档的链接:wiki.apache.org/httpd/13PermissionDenied
Tom Lianza 2012年

5

作为参考,我只是处理了这个问题,在我的具体情况下,这里没有任何答案。我正在配置虚拟主机,但更重要的是,我需要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的功能,其中许多设置已在服务器范围内为像我这样的虚拟人设置。


1
感谢这么多,花了相当长的一段时间搞清楚是怎么回事,没有现在与Apache / PHP到了叮当作响一段时间
米莎Reyzlin

1
是的,Options +FollowSymLinks就像魅力一样。
agarie

2

我遇到了同样的问题:我的(旧)帐户无法访问,但是升级到Lion后创建的另一个用户帐户就可以了。

确保/etc/apache2/users/USERNAME.conf如下所示:

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

做一个sudo chown root:wheel /etc/apache2/users/USERNAME.conf

似乎在操作系统升级期间未设置此权限设置,并且Apache用户无法读取配置文件,并引发错误。

至少这为我解决了。


1
也许sudo apachectl restart之后。
Arjan

这对我运行10.7.5的工作。一旦我更新并重新启动了apache,目录路径就没有指向我的本地网络根目录。奇怪的是,该路径在过去一年中一直不正确,并且一直在正常工作。我今天才突然发现错误。
supajb

2

我在10/2011中对Lion进行了更新

启用了UserDir,因此我的/etc/apache2/extra/httpd-userdir.conf如下所示:

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>

1

继续从初始问题评论进行对话-签出/etc/apache2/httpd.conf文件。在我的机器上,我有这个:

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

我怀疑您的评论已被删除。我隐约记得从10.5更改为10.6时手动更改此设置,默认设置已更改。

这可能很明显,但是您必须使用它sudo来编辑文件,因为它将由root拥有。


1
不,我的模样和您的模样完全一样。
waiwai933

1

我的案例是XAMPP + Mac OS X 10.7 + Dropbox文件夹中的目录(交叉引用我在Stack Overflow中的另一个问题

Apache报告了“ 403禁止访问”,因此,我按照上面的注释将的用户/XAMPP/xamppfiles/etc/httpd.conf从更改User nobodyUser my_user_name。重新启动Apache,它工作正常。


0

您可能没有打开索引。如果不这样做,则需要创建一个索引文件(index.htmlindex.php)或显式指定该文件,即http://localhost/~me/mypage.html


抱歉,请仔细检查一下,我应该访问localhost /〜myusername / index.html,并在我的Sites文件夹中有一个名为index.html的文件,对吗?如果是这样,则403仍在发生。
waiwai933

~myusername我相信您根本不应该访问。http://localhost/应该指向/Users/youruser/Sites/
乔什(Josh K)2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.