Macos Apache localhost 403与Yosemite发生错误

Macos Apache localhost 403与Yosemite发生错误,macos,apache,http-status-code-403,Macos,Apache,Http Status Code 403,我刚刚安装了Mac OS X Yosemite fresh。我配置了Apache,并将“users/user/Sites”标记为755。当我点击localhost时,我收到一条403禁止的“您没有访问/此服务器的权限”。我添加到主机文件中的任何其他站点也会发生同样的情况 我尝试根据来自的帮助配置用户目录。这方面的人知道存在Apache问题,但没有提供太多建议 我的目录权限如下所示 drwxr-xr-x 29 root wheel 1054 Aug 11 07:30 /

我刚刚安装了Mac OS X Yosemite fresh。我配置了Apache,并将“users/user/Sites”标记为755。当我点击localhost时,我收到一条403
禁止的“您没有访问/此服务器的权限”
。我添加到主机文件中的任何其他站点也会发生同样的情况

我尝试根据来自的帮助配置用户目录。这方面的人知道存在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
有人能提供任何建议或帮助吗?以下是我的和文件的链接,仅供参考。

中的建议对我有所帮助

特别是“仅约塞米蒂”部分:

首先,有一个指令通过默认情况下拒绝访问整个文件系统来帮助保护您的机器。我将向您展示如何删除该指令,因为我发现在用于开发的机器上删除该指令更容易。代码段从第220行到第223行。您可以注释掉(在每行前面放置“#”)或删除此部分

这部分是

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

不允许超限
要求全部拒绝
注意:

由于其他人对此进行了更详细的跟进,上述方法可能不安全

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

第250行(约塞米蒂)更改:

致:

然后在终端运行中:

sudo apachectl restart
sudo apachectl restart

您不希望向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.
Apache2.4

<Directory "/Users/jnovack/Sites/">
  Options Indexes MultiViews
  AllowOverride All
  # OSX 10.10 / Apache 2.4
  Require all granted
</Directory>

选项索引多视图
允许超越所有
#OSX 10.10/Apache 2.4
要求所有授权

这可能是一个很晚的答案,但我遵循了大多数堆栈溢出解决方案,由于各种原因,它们都没有帮助我。因此,我确实将我的设备重置为新的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按Enter键,然后按Y键,然后再次按Enter键)

并在第16行取消注释以下行:

#Include /private/etc/apache2/users/*.conf
to
Include /private/etc/apache2/users/*.conf
保存并退出(Ctrl+X按Enter键,然后按Y键,然后再次按Enter键)

现在转到apache用户文件夹检查配置文件是否存在

cd /etc/apache2/users/
如果此文件夹中没有配置文件,请逐个创建

sudo nano /etc/apache2/users/<**YOUR USERNAME**>.conf
保存并退出

现在重新启动apache

sudo apachectl restart
现在转到浏览器并键入localhost,它应该可以正常工作

请注意:如果在重新启动计算机后仍无法工作,请尝试重新启动计算机

将index.html创建为您应该在此处找到的index.html.en:

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>
第250行(约塞米蒂)更改:

致:

然后在终端运行中:

sudo apachectl restart
sudo apachectl restart
现在转到
localhost/projectlink
查看您的项目索引文件是否显示在浏览器上


快乐编码..

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

cd~

mkdir‘Sites’

禁止使用
localhost
有两种可能,第一种可能是因为您的
apache
设置不正确,第二种可能是因为您设置了
vhost
而忘记了设置
localhost

  • sudo nano/etc/apache2/extra/httpd vhosts.conf
  • 添加此代码
  • `


    它应该可以工作:)

    建议可能会关注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//Sites/“
    允许超越所有
    选项索引多视图跟随符号链接
    要求所有授权
    

    重新启动apache(Web服务器)

    sudo apachectl重新启动


    检查你的网站

    整个目录结构被锁定是有原因的。请参阅下面@jnovack的答案,以获得更好的解决方案。简短版本:Apache2.4中的Allow/Deny语法已更改,因此忽略了以前con文件中的旧语句。感谢您将此添加到讨论中。我编辑了我的答案,建议人们继续阅读其他关于安全细节的答案。这对我没有任何明显的影响。
    mod\u userdir.so
    可以被禁用吗?(我原来是)用户名.conf应该是我的Mac用户还是Apache用户的?是的,
    mod_userdir.so
    在默认情况下是禁用的。请按照我在第三段中发布的整个说明从一开始就进行设置。此答案仅针对
    mod_userdir.so
    中2.2和2.4之间的更改。谢谢。我在httpd.conf的所有vhost中添加了
    Require-all-grated
    ,效果很好。哦,我的上帝,我可以吻你了。是
    要求所有授予的
    才是最糟糕的。该死,这就是为什么我讨厌升级Mac如果你的文档是空的,你需要添加“索引”来显示文件和文件夹的列表
    
    It works!
    
    ln -s <Path_to_your_Project(index_file)> <Path_to_webroot>
    
    ln -s /Users/<YOUR USERNAME>/Documents/project/ /Library/Webserver/documents/projectlink 
    
    sudo nano /private/etc/apache2/httpd.conf
    
    Options FollowSymLinks Multiviews
    
    Options FollowSymLinks Multiviews Indexes
    
    sudo apachectl restart
    
    <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