提问者:小点点

为什么Apache不从新安装的PHP7开始?


macOS Sierra附带PHP5.6,我希望通过从源代码构建将其升级到最新的稳定版本PHP(7.1.4)。我所做的实际上是一个新的安装。首先,我从系统中删除了旧的PHP,然后从PHP下载源代码。net并构建它。除了Apache之外,一切都很好。

顺便说一下,在我构建PHP之前,我必须安装aprapr-util包。PHP 7不只是接受操作系统默认自带的/usr/lib下的相同包。

执行configtest时,我收到以下错误:

http: /private/etc/apache2/httpd.conf第175行语法错误:
无法将libexec/apache2/libphp7.so加载到服务器:
dlopens(/usr/libexec/apache2/libphp7.so,10):
未加载库: /usr/local/apr/lib/libaprutil-1.0.dylib
引用自: /usr/libexec/apache2/libphp7.so
原因:库版本不兼容:
libphp7.so需要版本6.0.0或更高版本,但libaprutil-1.0.dylib提供版本4.0.0

出于某种原因,libaprutil-1.0。dylib没有在/usr/local/apr/lib/下加载到我的环境中,这就是我无法启动Apache的原因。

我在这里看到了类似的问题,并尝试采用公认的解决方案。然而,我仍然无法启动它。

你知道为什么它不能加载libaprutil吗?


共2个答案

匿名用户

我在macOS HighSierra上也有同样的问题:

httpd:/private/etc/apache2/httpd的第174行出现语法错误。conf:无法加载/usr/local/opt/php/lib/httpd/modules/libphp7。所以进入服务器:dlopen(/usr/local/opt/php/lib/httpd/modules/libphp7.so,10):库未加载:/usr/local/opt/apr util/libexec/lib/libaprutil-1.0。dylib\n引用自:/usr/local/opt/php/lib/httpd/modules/libphp7。所以\n原因:不兼容的库版本:libphp7。因此需要7.0版。0或更高版本,但libaprutil-1.0。dylib提供了4.0版。0

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/http/httpd.conf启用PHP我把 /usr/local/etc/httpd/httpd.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>

它解决了这个问题。

匿名用户

确保php正常工作。将其写入命令行:

    $php -r 'echo "i am fine" . "\r\n";'

在我的例子中,在这个命令之后,php告诉我他已经失去了重要的依赖。