安装 OS X El Capitan 后,Apache 无法正常工作

Posted

技术标签:

【中文标题】安装 OS X El Capitan 后,Apache 无法正常工作【英文标题】:After install OS X El Capitan, Apache not working 【发布时间】: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

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于安装 OS X El Capitan 后,Apache 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

os x el capitan 10.11 懒人版安装镜像怎么安装

markdown 全新安装 - OS X 10.11 El Capitan

sh 在OS X El Capitan上安装Autoconf和Automake

Mac OS X El Capitan10.11 系统安装教程

Cocoapods “pod install”卡在 OS X El Capitan 上

如何安装最新版本的 openssl Mac OS X El Capitan