优胜美地的Apache localhost 403错误

我刚刚安装了Mac OS X优胜美地。 我configuration了Apache,并将“用户/用户/站点”改为755.当我打本地主机时,我收到一个403 Forbidden "You don't have permission to access / on this server" 。 同样的事情发生在我添加到我的主机文件的任何其他网站。

我尝试在这篇文章的帮助下configuration用户目录。 这个MacRumors的线程中的人知道有一个Apache的问题,但没有提供很多的build议。

我的目录权限看起来像这样

 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 

任何人都可以提供任何build议或帮助? 这里是链接到我的主机httpd.conf文件和错误日志以供参考。

您不希望打开整个硬盘驱动器到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)的模块mod_authz_core中的Directory指令与Apache 2.2(OSX 10.9)有不同的结构。

编辑: 如果你从开始设置Apache,请按照这个指令设置 OSX 10.10优胜美地安装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> 

编辑文件:/private/etc/apache2/httpd.conf

在250线(在优胜美地)改变:

 Options FollowSymLinks Multiviews 

至:

 Options FollowSymLinks Multiviews Indexes 

然后在terminal运行:

 sudo apachectl restart 

这可能是很晚的答案,但我确实遵循了堆栈溢出解决scheme的大部分,他们都没有帮助我出于各种原因。 所以我把我的设备重新设置为一个新的优胜美地操作系统,以使本地主机在Mac Yosemite(也与Symlinks)上工作,

我完成的步骤是:

 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按Enter,然后按Y再次input)

 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再次input)。

现在转到apache的用户文件夹来检查你的configuration文件是否存在

 cd /etc/apache2/users/ 

如果你没有在这个文件夹中的configuration文件,通过创build一个

 sudo nano /etc/apache2/users/<**YOUR USERNAME**>.conf 

用您的机器名称replace<YOUR USERNAME> (在terminalinputwhoami并input该名称)。

创build.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 

现在去你的浏览器并inputlocalhost,它应该按预期工作,

就像一个注意:如果尝试重新启动计算机后,它不起作用

创buildindex.html作为index.html.en,你应该在这里find:

 open /Library/Webserver/Documents/ 

右键单击index.html.en并将其复制到index.html保持原样

在浏览器中再次尝试,如果你有成功,你可以删除重复的文件

只需要清楚,在原来的文件index.html.en中保留原来的位置,在这个步骤中不会受到任何伤害。

不知道为什么我不得不采取这个神秘的弯路 – 可能是我的机器本地的东西,但如果你按照上面的指南后遇到麻烦,看看是否有帮助。

SymLinks

如果你有成功,在浏览器中,你应该看到

 It works! 

现在创build符号链接到你的任何项目。

 ln -s <Path_to_your_Project(index_file)> <Path_to_webroot> 

例如,如果您的“文档”文件夹中有项目文件夹,请将webroot指向您的索引文件

 ln -s /Users/<YOUR USERNAME>/Documents/project/ /Library/Webserver/documents/projectlink 

您可能需要权限才能创build符号链接(对Sudo使用上述命令)

configurationApache遵循符号链接(感谢tomvon,我没有足够的分数投票给你)

 sudo nano /private/etc/apache2/httpd.conf 

在250线(在优胜美地)改变:

 Options FollowSymLinks Multiviews 

至:

 Options FollowSymLinks Multiviews Indexes 

然后在terminal运行:

 sudo apachectl restart 

现在去localhost/projectlink看看你的项目索引文件是否显示在浏览器上。

快乐编码

这篇文章中的build议帮助了我。

特别是“优胜美地”部分:

首先,通过默认拒绝整个文件系统的访问,有一个指令可以帮助保护你的机器。 我将告诉你如何删除这个指令,因为我发现在一个用于开发的机器上更容易。 代码段从220行到223行。你可以注释掉(每行前面加'#'),或者删除这个段。

而这个部分是…

 <Directory /> AllowOverride none Require all denied </Directory> 

注意:

正如其他人对此进行了更详细的介绍,上述方法可能是不安全的。

有两种可能性,为什么你的localhost被禁止,首先可能是因为你的apache设置不正确,第二,可能是因为你设置了vhost ,你忘记设置localhost

  1. sudo nano /etc/apache2/extra/httpd-vhosts.conf
  2. 添加此代码

`

 <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> 
  1. 保存并重新启动你的Apache

`

 sudo apachectl restart 

它应该是作品:)

只需在用户文件夹中创build“站点”文件夹即可。 去

cd〜
mkdir'网站'