优胜美地的 Apache localhost 403 错误
Posted
技术标签:
【中文标题】优胜美地的 Apache localhost 403 错误【英文标题】:Apache localhost 403 error with Yosemite 【发布时间】:2014-10-04 17:04:54 【问题描述】:我刚刚安装了全新的 Mac OS X Yosemite。我配置了 Apache 并将“用户/用户/站点”修改为 755。当我点击 localhost 时,我收到 403 Forbidden "You don't have permission to access / on this server"
。我添加到我的主机文件中的任何其他网站都会发生同样的事情。
我尝试在this post 的帮助下配置用户目录。 MacRumors thread 上的人知道存在 Apache 问题,但没有提供很多建议。
我的目录权限是这样的
drwxr-xr-x 29 root wheel 1054 Aug 11 07:30 /
drwxr-xr-x 6 root admin 204 Aug 11 07:29 /Users/
drwxr-xr-x+ 26 zachshallbetter staff 884 Aug 11 11:57 /Users/zachshallbetter/
0: group:everyone deny delete
drwxr-xr-x 5 zachshallbetter staff 170 Aug 11 10:16 /Users/zachshallbetter/Sites
谁能提供任何建议或帮助?以下是我的hosts 和httpd.conf 文件和error logs 的链接供参考。
【问题讨论】:
除非你只有几个网络脚本,否则你应该查看configuring Apache Virtual Hosts on Mac OS X而不是启用用户目录。 两件事:1) 更新重置了 httpd.conf,因此您需要重新包含 vhost conf 并重新启用所需的模块,如下 mahi 所述。 2)在每个虚拟主机定义的“目录”部分中,添加“要求所有授权”。这取代了旧的“从拒绝订购,允许”指令。 (将它们留在原处似乎并没有什么坏处,只需确保也添加新的。) 【参考方案1】:您不想将整个硬盘驱动器开放给 Web 服务器进程。事实上,httpd.conf
的第 215-217 行说:
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
Apache 2.4 (OSX 10.10 Yosemite) 与 Apache 2.2 (OSX 10.9) 的 Directory directive in Module mod_authz_core 结构不同。
编辑: 如果您从一开始就设置 Apache,请按照this instruction set 在 OSX 10.10 Yosemite 上设置 apache 和 php。
假设您已经启用了mod_userdir.so
,您的问题出在您的用户 .conf 文件 (/etc/apache2/users/username.conf
) 中,请编辑(或添加)以下内容。
Apache 2.2:
<Directory "/Users/jnovack/Sites/">
Options Indexes MultiViews
AllowOverride All
# OSX 10.9 / Apache 2.2
Order from deny, allow
</Directory>
Apache 2.4
<Directory "/Users/jnovack/Sites/">
Options Indexes MultiViews
AllowOverride All
# OSX 10.10 / Apache 2.4
Require all granted
</Directory>
【讨论】:
感谢您将此添加到讨论中。我编辑了我的答案,建议人们继续阅读其他答案以了解安全细节。 这对我没有任何明显的影响。mod_userdir.so
可以禁用吗? (我原来是)username.conf
应该是给我的 Mac 用户还是 Apache 用户?
是的,mod_userdir.so
默认是禁用的。请按照我第三段中发布的整个说明集从一开始就进行设置。此答案仅解决 mod_userdir.so
中 2.2 和 2.4 之间的更改。
谢谢。我从 httpd.conf 将Require all granted
添加到我的所有虚拟主机中,并且像魅力一样工作。
天哪,我可以吻你。 Require all granted
真是太棒了。该死的,这就是我讨厌升级 Mac 的原因【参考方案2】:
编辑文件: /private/etc/apache2/httpd.conf
第 250 行(在优胜美地)更改:
Options FollowSymLinks Multiviews
到:
Options FollowSymLinks Multiviews Indexes
然后在终端运行:
sudo apachectl restart
【讨论】:
如果您的文档为空,则需要添加“索引”以显示文件和文件夹的列表。【参考方案3】:这可能是很晚的答案,但我确实遵循了大多数 Stack Overflow 解决方案,由于各种原因,它们都没有帮助我。所以我确实将我的设备重置为一个新的 Yosemite 操作系统,以让这个本地主机在 Mac Yosemite 上工作(也带有符号链接),
我确实做过的步骤:
sudo nano /etc/apache2/httpd.conf
取消注释以下行:
#LoadModule php5_module libexec/apache2/libphp5.so
to
LoadModule php5_module libexec/apache2/libphp5.so
#LoadModule userdir_module libexec/apache2/mod_userdir.so
to
LoadModule userdir_module libexec/apache2/mod_userdir.so
#Include /private/etc/apache2/extra/httpd-userdir.conf
to
Include /private/etc/apache2/extra/httpd-userdir.conf
保存退出(Ctrl+X按回车再按Y再回车)
sudo nano /etc/apache2/extra/httpd-userdir.conf
并在第 16 行取消注释以下行:
#Include /private/etc/apache2/users/*.conf
to
Include /private/etc/apache2/users/*.conf
保存并退出(Ctrl+X 按 Enter 并按 Y 并再次输入)。
现在去apache用户文件夹检查你的配置文件是否存在
cd /etc/apache2/users/
如果此文件夹中没有配置文件,则创建一个
sudo nano /etc/apache2/users/<**YOUR USERNAME**>.conf
将<YOUR USERNAME>
替换为您的机器名称(在终端中输入whoami
并输入该名称)。
创建 .conf 文件后,将下面的行复制到该文件中
<Directory "/Users/<YOUR USERNAME>/Sites/">
AddLanguage en .en
LanguagePriority en fr de
ForceLanguagePriority Fallback
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from localhost
Require all granted
</Directory>
保存退出
现在重启你的 apache
sudo apachectl restart
现在转到您的浏览器并键入 localhost,它应该可以正常工作,
仅作说明:如果尝试重新启动计算机后仍无法正常工作
完全按照 index.html.en 创建 index.html,您应该在这里找到:
open /Library/Webserver/Documents/
右键单击 index.html.en 并将其复制到 index.html 保留原样
在浏览器中再试一次,如果成功,你可以删除重复的文件
为了清楚起见,将原始文件 index.html.en
保留在原处,在整个步骤中保持原样且未受到伤害。
不知道为什么我必须绕道而行——可能是我机器本地的问题,但如果您在按照上述指南操作后遇到问题,看看它是否有帮助。
符号链接:
如果你成功了,在浏览器中你应该会看到
It works!
现在为您的任何项目创建符号链接。
ln -s <Path_to_your_Project(index_file)> <Path_to_webroot>
例如,如果您的 Documents 文件夹中有项目文件夹,则将 webroot 指向您的索引文件
ln -s /Users/<YOUR USERNAME>/Documents/project/ /Library/Webserver/documents/projectlink
您可能需要创建符号链接的权限(将上述命令与 Sudo 一起使用)
配置 apache 以遵循符号链接 (感谢 tomvon,我没有足够的分数来投票给你)
sudo nano /private/etc/apache2/httpd.conf
第 250 行(在优胜美地)更改:
Options FollowSymLinks Multiviews
到:
Options FollowSymLinks Multiviews Indexes
然后在终端运行:
sudo apachectl restart
现在去localhost/projectlink
看看你的项目索引文件是否显示在浏览器上。
快乐编码..
【讨论】:
完美运行。本文中的类似说明还列出了旧版本 OSX(优胜美地之前)的步骤差异 - techzog.com/tips/mac-osx/set-web-server-mac-osx 谢谢!它在 Mac OS Sierra 上运行良好。就我而言,我错过了这一行:#Include /private/etc/apache2/extra/httpd-userdir.conf to Include /private/etc/apache2/extra/httpd-userdir.conf 在 Sierra 上也为我工作过。将Include /private/etc/apache2/users/*.conf
添加到httpd-userdir.conf
,一切顺利。谢谢/【参考方案4】:
this article 中的建议帮助了我。
特别是“仅优胜美地”部分:
首先,有一个指令通过默认拒绝访问整个文件系统来帮助保护您的机器。我将向您展示如何删除此指令,因为我发现在用于开发的机器上更容易。这部分代码从第 220 行到第 223 行运行。您可以注释掉(在每行前面放置“#”)或删除此部分。
该部分是...
<Directory />
AllowOverride none
Require all denied
</Directory>
注意:
由于其他人对此进行了详细跟进,因此上述方法可能不安全。
【讨论】:
整个目录结构被锁定是有原因的。请参阅下面的@jnovack 答案以获得更好的解决方案。短版:Apache 2.4 中更改了 Allow/Deny 语法,因此忽略了之前 con 文件中的旧语句。【参考方案5】:您的localhost
被禁止有两种可能,首先可能是因为您的apache
设置不正确,其次可能是因为您设置了vhost
而您也忘记了设置localhost
sudo nano /etc/apache2/extra/httpd-vhosts.conf
添加此代码
`
<VirtualHost *:80>
ServerName localhost
DocumentRoot "/Users/username/Sites"
<Directory "Users/username/Sites">
Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all
</Directory>
</VirtualHost>
-
保存并重新启动您的 apache
`
sudo apachectl restart
应该可以了:)
【讨论】:
【参考方案6】:建议可能侧重于您自己在 apache 中的用户特定配置,但默认情况下可能根本不会加载此配置。
编辑 userdir 模块配置:
sudo vi /etc/apache2/extra/httpd-userdir.conf
取消注释用户目录配置文件的include:
Include /private/etc/apache2/users/*.conf
确保你有一个根据我们自己的用户名配置的用户目录:
sudo vi /etc/apache2/users/.conf
确保您的主目录配置良好:
DocumentRoot "/Users/<username>/Sites/"
<Directory "/Users/<username>/Sites/">
AllowOverride All
Options Indexes MultiViews FollowSymLinks
Require all granted
</Directory>
重启 apache(网络服务器)
sudo apachectl 重启
检查您的网站!
【讨论】:
【参考方案7】:只需在您的用户文件夹中创建“站点”文件夹。去
cd ~ mkdir '网站'
【讨论】:
正如您在原始帖子中看到的那样,站点目录已经存在。以上是关于优胜美地的 Apache localhost 403 错误的主要内容,如果未能解决你的问题,请参考以下文章
优胜美地升级后本地 WordPress 环境中“建立数据库连接时出错”