安装 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.conf
和 http.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 系统安装教程