优胜美地的 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

谁能提供任何建议或帮助?以下是我的hostshttpd.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

&lt;YOUR USERNAME&gt; 替换为您的机器名称(在终端中输入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 环境中“建立数据库连接时出错”

使用扫描仪采集图像到优胜美地

优胜美地安装后 Python configparser 错误

Applescript控制excel在优胜美地坏了?

优胜美地和瓦尔格林德

优胜美地系统红宝石上缺少 dtrace 探针