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
这也有帮助(在完成其他所有操作之后):
在您的 /Users/{user name}/Sites
文件夹中创建符号链接
ln -s /Path/To/Target/Files /Users/{user name}/Sites/{name}
我刚从 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
这也有帮助(在完成其他所有操作之后):
在您的 /Users/{user name}/Sites
文件夹中创建符号链接
ln -s /Path/To/Target/Files /Users/{user name}/Sites/{name}