macOS Sierra 自带的是 PHP 5.6,我想通过从源码开始构建将其升级到最新的 PHP 稳定版(7.1.4)。我所做的实际上是一个全新的安装。首先,我从系统中删除了旧的PHP,然后从php.net上下载了源代码,并进行了编译。除了Apache之外,一切都很正常。
顺便说一下,在我构建 PHP 之前,我必须安装 apr
和 apr-util packages
. PHP 7不仅接受了同样的包下的。/usr/lib
操作系统默认自带的。
当我执行configtest时,我收到这个错误。
httpd: 在 privateetcapache2httpd.conf 的第 175 行出现语法错误。 Cannot load libexecapache2libphp7.so into server: dlopen(usrlibexecapache2libphp7.so, 10): 库未加载:usrlocalaprlibaprutil-1.0.dylib 引用自:usrlibexecapache2libphp7.so 原因:不兼容的库版本:libphp7.so需要6.0.0或更高版本,但libaprutil-1.0.dylib提供4.0.0版本。
由于某些原因,libaprutil-1.0.dylib没有被加载到我的环境下的 /usr/local/apr/lib/
这就是为什么我不能启动Apache的原因。
我看到类似的问题 此处 并尝试做公认的解决方案。然而,我仍然无法管理启动它。
任何想法,为什么它不能加载 libaprutil
?
我在 macOS HighSierra 上也遇到了同样的问题。
httpd: 在 privateetcapache2httpd.conf 的第 174 行出现语法错误,无法加载 usrlocalopt。 Cannot load usrlocaloptphplibhttpdmoduleslibphp7.so into server: dlopen(usrlocaloptphplibhttpdmoduleslibphp7.so, 10): 库未加载:usrlocaloptapr-utillibexeclibaprutil-1.0.dylib/n 引用自:usrlocaloptphplibhttpdmoduleslibphp7.son/原因:库版本不兼容:libphp7.so需要7.0.0或更高版本,但libaprutil-1.0.dylib提供4.0.0版本。
原因是在系统Apache和brew的php不兼容。我相信这是不应该发生的,但我没有去深究。我已经禁用了默认的apache,并安装了一个从 酿 仓库的指令。https:/tecadmin.netinstall-apache-macos-homebrew。
sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
brew install httpd
sudo brew services start httpd
这个操作需要合并我的旧配置 /private/etc/apache2/httpd.conf
与新的。/usr/local/etc/httpd/httpd.conf
要启用 php 我在usrlocaletchttpdhttpd.conf中加入了这几行。
LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
它解决了问题。