我刚刚安装了Mac OS X Yosemite。我配置了Apache和chmodded" users / user / Sites"到达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
任何人都可以提供任何建议或帮助吗?以下是我的hosts和httpd.conf文件以及error logs的链接以供参考。
答案 0 :(得分:80)
您不希望将整个硬盘驱动器打开到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。
编辑: 如果您要从START设置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>
答案 1 :(得分:45)
编辑文件: /private/etc/apache2/httpd.conf
第250行(优胜美地)改变:
Options FollowSymLinks Multiviews
为:
Options FollowSymLinks Multiviews Indexes
然后在终端运行中:
sudo apachectl restart
答案 2 :(得分:29)
这可能是非常晚的答案,但我确实遵循了大部分Stack Overflow解决方案,由于各种原因,他们都没有帮助我。所以我确实将我的设备重置为一个新的Yosemite操作系统,以使这个本地主机在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键再次输入)
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 Users文件夹检查配置文件是否存在
cd /etc/apache2/users/
如果此文件夹中没有配置文件,请通过
创建一个sudo nano /etc/apache2/users/<**YOUR USERNAME**>.conf
将<YOUR USERNAME>
替换为您的计算机名称(在终端输入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创建为index.html.en,您可以在此处找到:
open /Library/Webserver/Documents/
右键单击index.html.en并将其复制到index.html,保留原始
在浏览器中再试一次,如果成功,则可以删除重复的文件
为了清楚起见,请将原始文件index.html.en
保留在原始文件中,在此步骤中不受影响且不受伤害。
不知道为什么我不得不采取这种神秘的绕道 - 可能是我的机器本地的东西,但如果你在遵循上述指南后遇到麻烦,看看它是否有帮助。
SymLinks :
如果你成功了,在浏览器中你应该看到
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
,查看您的项目索引文件是否显示在浏览器上。
快乐编码..
答案 3 :(得分:8)
this article中的建议帮助了我。
特别是&#34; Yosemite Only&#34;部分:
首先,有一个指令通过默认拒绝访问整个文件系统来帮助保护您的计算机。我将向您展示如何删除此指令,因为我发现在用于开发的机器上更容易。代码部分从第220行到第223行。您可以注释掉(在每行前面放置'#')或只删除此部分。
该部分是......
<Directory />
AllowOverride none
Require all denied
</Directory>
注意:
正如其他人对此进行了详细介绍,上述方法可能不安全。
答案 4 :(得分:2)
有两种可能性导致您的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>
`
sudo apachectl restart
它应该是有效的:)
答案 5 :(得分:0)
建议可能会关注您自己在apache中的用户特定conf,但默认情况下可能根本不会加载此配置。
编辑userdir模块配置:
sudo vi /etc/apache2/extra/httpd-userdir.conf
取消注释用户目录配置文件的包含:
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 restart
检查您的网站!
答案 6 :(得分:-3)
只需在用户文件夹中创建“Sites”文件夹即可。转到
cd〜
mkdir'网站'