升级到 Yosemite 后 Apache 出现问题

升级到 Yosemite 后 Apache 出现问题

升级到 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

如果您创建了符号链接,而该链接在上述名称中被引用,但找不到,则可能会发生这种情况。要解决此问题,请创建一个符号链接,为实际文件提供绝对路径,并为提供的符号链接文件名提供相同的路径。

相关内容