优胜美地的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
-
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
它应该是作品:)
只需在用户文件夹中创build“站点”文件夹即可。 去
cd〜
mkdir'网站'