【问题标题】:After install OS X El Capitan, Apache not working安装 OS X El Capitan 后,Apache 无法正常工作
【发布时间】:2016-01-07 23:03:25
【问题描述】:

我刚刚在我的 MacBook Pro 中安装了“El capitan”,但我无法输入任何在 vhost 中设置的主机。之前在优胜美地,一切都运行良好。当我输入我的一个虚拟主机时,我得到:

403 "Forbidden 您无权访问此服务器上的 /。"

我尝试了什么?

转到/etc/apache2/httpd.conf 并取消注释此行:

Include /private/etc/apache2/extra/httpd-vhosts.conf

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

/etc/apache2/extra/httpd-vhosts.conf 是很久以前在优胜美地工作的同一个文件,所以我没有修改。

为了在 Yosemite 中安装所有东西,我使用了自制软件。

另一个与“El capitan”相关的问题,在我能够输入http://localhost/~myuser/ 之前,我可以访问/Users/myuser/Sites 中的任何文件夹,现在我收到这条消息:404 not found

希望对我有所帮助,我不是服务器专家,设置它对我来说真的很困难,而且每当操作系统有新的升级时浪费大量时间非常烦人。

【问题讨论】:

    标签: apache httpd.conf osx-elcapitan


    【解决方案1】:

    升级过程会保留您的旧httpd.conf 的副本。除非您已经过时,否则只需用旧文件覆盖新文件即可。保留一份新的以防万一……

    sudo cp /etc/apache2/httpd.conf /etc/apache2/httpd.conf.after-update
    sudo mv /etc/apache2/httpd.conf.pre-update /etc/apache2/httpd.conf
    sudo apachectl restart
    

    【讨论】:

    • 让我开心! :3
    【解决方案2】:

    我也遇到了同样的问题。 键入此命令行,您将收到来自 apache 的错误:

    apachectl configtest
    

    如果你有这个错误:

    AH00526: Syntax error on line 20 of /private/etc/apache2/extra/httpd-mpm.conf: Invalid command 'LockFile', perhaps misspelled or defined by a module not included in the server configuration.
    

    所以这个链接可以提供帮助:https://apple.stackexchange.com/questions/211015/el-capitan-apache-error-message-ah00526

    【讨论】:

    • apachectl configtest 在 DocumentRoot 不存在时提供帮助(这可能会导致权限消息)。
    【解决方案3】:

    升级到El Capitan线路后我体验到了

    Include /private/etc/apache2/extra/httpd-userdir.conf
    

    /private/etc/apache2/httpd.conf
    

    又被评论了。取消注释并重新启动 apache 后,一切正常。

    【讨论】:

    • 除上述之外,我还对/private/etc/apache2/httpd.conf/private/etc/apache2/httpd.conf~previous 进行了差异合并以恢复我的升级前设置。
    • 我也遇到了同样的问题。我已取消注释该行并重新启动了 apache,但问题仍未解决。
    • @abhishek,这解决了我的问题:tomjbward.co.uk/symfony-on-osx-el-capitan。我只做了第 2 步。
    • 我需要取消注释 LoadModule userdir_module libexec/apache2/mod_userdir.so
    • 按照@Justin 的建议做差异对我有用:)
    【解决方案4】:

    我已合并到两个版本(httpd.confhttp.conf~previous),之后我发现 v-host 不再工作了。 在 /private/etc/apache2/extra/httpd-vhosts.conf 中禁用规则 19 #NameVirtualHost *:80 后,一切都恢复正常了!

    【讨论】:

    • 感谢 JVD!像魅力一样工作。我得到了一个禁止,直到我这样做。我相信(最终)这是我的 DocumentRoot 设置。
    【解决方案5】:

    LockFile 是 Apache ≤ 2.2 的指令。 El Capitan 附带 Apache 版本 2.4。所以,你需要禁用 LockFile

    首先,确保 apache 已停止:

    sudo apachectl stop
    

    然后编辑你的httpd-mpm.conf:

    评论这行

    #
    # The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
    #
    <IfModule !mpm_winnt_module>
    <IfModule !mpm_netware_module>
      LockFile "/private/var/log/apache2/accept.lock"
    </IfModule>
    </IfModule>
    

    启动 apache sudo apachectl start 就是这样

    【讨论】:

      【解决方案6】:

      正如一些人所提到的,问题是升级到 El Capitan 备份了您以前的 httpd.conf 并将其重命名为 httpd.conf~previous 并为您提供了一个新的 httpd.conf。您需要使用这些文件来解决您的问题:

      使用 nano 或其他编辑器打开 httpd.conf~previous 并查找以下 2 行:

      DocumentRoot "/Users/my-machine-name/Prev-Localhost-Path
      <Directory "/Users/my-machine-name/Prev-Localhost_path">
      

      复制它们,然后使用 nano 打开 httpd.conf 并查找以下 2 行:

      DocumentRoot "/Library/WebServer/Documents"
      <Directory "/Library/WebServer/Documents">
      

      通过在每行前面输入“#”字符将它们注释掉,然后在它们下面粘贴您从原始文件复制的两行。保存文件并退出。

      之后,您需要重新启动。在我进行这些更改然后重新启动之前,我的设置将无法正常工作。但也许 DSG 建议重启 apache 就足够了:

      sudo apachectl restart
      

      【讨论】:

        猜你喜欢
        • 2016-01-01
        • 1970-01-01
        • 2015-11-05
        • 1970-01-01
        • 2016-07-22
        • 1970-01-01
        相关资源
        最近更新 更多