OSX El Capitan - Apache 403 禁止访问

OSX El Capitan - Apache 403 Forbidden

我刚从 Yosemite 升级到 El Capitan,但不幸的是忘记复制我的旧 httpd.conf,现在我需要重新配置它的所有设置。

我已经将 documentroot 更改为上一个 /users/admin/www,并且还配置为释放对此文件夹的访问权限:

<Directory "/users/admin/www">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

重新启动 Apache 但即使这样,我在尝试访问 127.0.0.1 时仍收到 'Forbidden' 错误。

我在这里缺少什么?

我刚刚发现旧的 .conf 文件在 El Captain 更新期间保存在这个文件夹中:

/private/etc/apache2/httpd.conf.pre-更新

所以我只是将旧定义复制到新定义:)

您可以导航至 /private/etc/apache2/,然后导航至 diff httpd.conf httpd.conf.pre-update,以查看旧的 conf 文件与已添加的新的 conf 文件之间的差异。

对我来说有很多 LoadModules 行被注释掉了,我的 apache user/group 已经改回 _www

我不熟悉 Apache 2.4 中的变化,所以这个真的难倒了我大约 30 分钟。我刚刚从 Mavericks 升级到 El Capitan(Apache 2.2 到 2.4),我无法加载我的个人站点目录(http://localhost/~{用户名}。我一直在 "Forbidden"。经过大量研究后,我发现我需要修改 /etc/apache2/users/{username}.conf 以添加 "Require all granted"。因为我从未升级到 Yosemite(它也使用 Apache 2.4),所以我从来没有偶然发现这个。

我希望此信息对某人有所帮助

更新目录访问控制对我有用:

In this example, all requests are allowed.

2.2 configuration:

Order allow,deny Allow from all

2.4 configuration:

Require all granted

来源:http://httpd.apache.org/docs/trunk/upgrading.html(在访问控制下)

注意:我将自定义设置单独保存在/private/etc/apache2/other/下。

在升级到 El Capitan 后,我在用户级别启用自己来为网站提供服务后,尝试访问本地网站目录中的页面时,我遇到了类似的问题,收到 404 错误。问题是 Apache 将 httpd.conf 文件重置为其默认值,这会禁止用户文件夹从中加载文件。所以 http://localhost loaded fine but http://localhost/~username/index.html 不会加载。这是修复:

备份创建的 "new" 配置文件:

sudo cp /etc/apache2/httpd.conf /etc/apache2/httpd.conf_capitan

恢复重命名的 "old" 配置文件:

sudo cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

如@delphirules 所说,您可以像这样复制旧的 httpd.conf 文件:

sudo cp /etc/apache2/httpd.conf.pre-update /etc/apache2/httpd.conf

我一整天都无法连接到我的本地主机,但终于找到了这个:https://mallinson.ca/web-development-with-el-capitan/

只需 运行 复制命令,然后执行 sudo apachectl restart

我还在恢复模式下禁用了 SIP(​​系统完整性保护)。我不知道它是否真的做了什么。你可以在这里找到这些说明:https://forums.developer.apple.com/thread/3981

执行以下操作:

  • 打开终端
  • 运行:

    cd /etc/apache2/
    sudo mv httpd.conf httpd.conf.OLD
    sudo mv httpd.conf~previous httpd.conf
    sudo apachectl restart
    

在这个问题上花了 3 个小时后 - 这 对我有用

如果您对 DocumentRoot 目录中的某些项目有 symlinks,升级到 El Capitan 后,您可以像我一样为这些项目获得 403。 您将需要以下东西才能使它们再次工作:

1) 您的 apache 用户(默认为 _www)应该具有对包含您 link 的目录的目录的执行权限。 在我的 apache DocumentRoot 案例中,我有:

MyProject -> /Users/Me/Documents/Aptana Studio 3 Workspace/MyProject

并且出于某种原因访问设置 /Users/Me/Documents/Aptana Studio 3 Workspace/MyProject-rw------- 1 Me staff 我猜它是在 OS x 升级期间设置的。 所以在 sudo chmod 755 Aptana\ Studio\ 3\ Workspace 错误解决后。

2) 由于升级也发生了变化 httpd.conf,请确保您在 DocumentRoot 目录中有此文件,或者按照上面的建议从备份 httpd.conf 中恢复:

Options Indexes FollowSymLinks

如果您从 Mavericks 或更早版本 OSx 升级并恢复了备份 httpd.conf,您应该像 jcfranko 所说的那样,将请求允许的 apache 2.2 设置替换为:

Require all granted

这也有帮助(在完成其他所有操作之后):

http://coolestguidesontheplanet.com/forbidden-403-you-dont-have-permission-to-access-username-on-this-server/

在您的 /Users/{user name}/Sites 文件夹中创建符号链接

ln -s /Path/To/Target/Files /Users/{user name}/Sites/{name}