![升级到 Yosemite 后 Apache 出现问题](https://linux22.com/image/1427258/%E5%8D%87%E7%BA%A7%E5%88%B0%20Yosemite%20%E5%90%8E%20Apache%20%E5%87%BA%E7%8E%B0%E9%97%AE%E9%A2%98.png)
升级到 Yosemite 后,我的 Mac Web 服务器无法工作。当我apachectl
在终端中输入时,我得到了以下信息:
httpd: Syntax error on line 527 of /private/etc/apache2/httpd.conf: Syntax error on line 8 of /private/etc/apache2/other/+php-osx.conf: Cannot load /usr/local/php5/libphp5.so into server: dlopen(/usr/local/php5/libphp5.so, 10): Symbol not found: _unixd_config\n Referenced from: /usr/local/php5/libphp5.so\n Expected in: /usr/sbin/httpd\n in /usr/local/php5/libphp5.so
如果我输入,sudo apachectl [re]start
什么都没有发生,就好像它已经启动了,我再次输入,它说它已经在运行。此外,我安装了 Web 共享首选项窗格 (http://clickontyler.com/web-sharing/),当我将开关从关闭拨到打开时,它仍然显示关闭,即使开关处于打开的位置。
你们想要/需要查看什么文件?真的需要尽快修复这个问题。
答案1
还请注意,Yosemite 安装程序会用新的默认 Apache 2.4 配置文件覆盖整个 /private/etc/apache2/httpd.conf 文件。
例如,如果Listen
添加了任何指令,它们将会消失,需要再次添加。例如:
Listen 127.0.0.1:81
我在以下文件中找到了我的旧配置,但由于与 2.2 的差异,它可能不应直接复制到 http.conf 文件上:
/private/etc/apache2/httpd.conf~上一个
升级指南位于:http://httpd.apache.org/docs/2.4/upgrading.html
确保任何先前包含的额外配置文件仍然包含在内,然后使用以下命令测试配置:
sudo apachectl configtest
答案2
出现此问题的原因是 Yosemite 安装了最新版本的 Apache (2.4),而早期版本的 Mac OS X 使用的是 Apache 版本 2.2
从错误来看,您使用的不是 Apple 提供的标准 PHP 版本,而是 liip.ch 提供的另一个版本。按照 Nuttyx 的建议删除 # 符号将加载 Apple 版本的 php (5.5.14)。如果您希望继续运行 liip 提供的版本,则需要重新安装它,以便它在 Apache 2.4 中正确加载。请参阅此处的详细说明:(http://blog.liip.ch/archive/2014/06/11/php-osx-available-for-os-x-10-10-yosemite.html)
注意:如果您使用虚拟主机,您可能需要稍微更改配置文件。特别是您需要更改以下内容:
2.2配置:
Order allow,deny
Allow from all
2.4配置:
Require all granted
答案3
似乎你可以通过以下方式解决这个问题移除文件#
中以下行的开头:/etc/apache2/httpd.conf
LoadModule php5_module libexec/apache2/libphp5.so
答案4
虽然上述问题已经得到解答,但还有另一种可能出现同样的错误,例如:
/private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_XYZ.so into server: dlopen(/usr/libexec/apache2/mod_XYZ.so, 10): image not found
如果您创建了符号链接,而该链接在上述名称中被引用,但找不到,则可能会发生这种情况。要解决此问题,请创建一个符号链接,为实际文件提供绝对路径,并为提供的符号链接文件名提供相同的路径。