libphp7.so需要12.0.0或更高版本

时间:2015-12-31 06:22:48

标签: php macos apache homebrew

我有一个全新安装的OSX el capitan 10.11.2并使用homebrew安装了php7。现在收到以下错误

命令

sudo apachectl -e info -k restart

错误

httpd: Syntax error on line 171 of /private/etc/apache2/httpd.conf:
 Cannot load /usr/local/opt/php70/libexec/apache2/libphp7.so into server: dlopen(/usr/local/opt/php70/libexec/apache2/libphp7.so, 10):
 Library not loaded: /usr/local/opt/libxml2/lib/libxml2.2.dylib
  Referenced from: /usr/local/opt/php70/libexec/apache2/libphp7.so
  Reason: Incompatible library version: libphp7.so requires version 12.0.0 or later, but libxml2.2.dylib provides version 10.0.0

我在谷歌上搜索过但没有得到任何具体的解决方案。

2 个答案:

答案 0 :(得分:1)

使用brew安装libxml2,

brew install libxml2

将以下行添加到〜/ .bash_profile

export LIBRARY_PATH=/usr/local/Cellar/libxml2/2.9.4/lib/:$LIBRARY_PATH

版本" 2.9.4"可以更改为当前

答案 1 :(得分:-3)

请不要这样做!您最好的办法是重新安装MAC OS X

好吧,我刚刚找到了办法。这是有点 hacky,但它确实有效。

尝试运行PHP 7时,apache会在libxml2.2.dylib下检查/usr/lib。要查看当前的版本,您可以运行otool -L /usr/lib/libxml2.2.dylib

这可能会输出这样的东西:

/usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0)

但Apache和PHP需要版本12.0.0,所以让我们通过homebrew安装它。

brew install libxml2 libxslt libiconv

这会将libxml安装到/usr/local/Cellar/libxml2/2.9.4/lib之类的地方。该目录将包含一个名为libxml2.2.dylib的文件。

如果您运行otool -L /usr/local/Cellar/libxml2/2.9.4/lib/libxml2.2.dylib,则会输出:

/usr/local/opt/libxml2/lib/libxml2.2.dylib (compatibility version 12.0.0, current version 12.4.0)

所以这是PHP和Apache正在寻找的版本。我们想要将此文件移至/usr/lib。但不是那么快,我们已经在该文件夹中有一个名为libxml2.2.dylib的文件,所以我们只需添加.bak扩展名以防我们再次需要它。

sudo mv /usr/lib/libxml2.2.dylib /usr/lib/libxml2.2.dylib.bak

现在我们可以将自制软件安装的文件移动到此目录。

sudo cp /usr/local/Cellar/libxml2/2.9.4/lib/libxml2.2.dylib /usr/lib

就是这样!现在,您应该可以正常运行sudo apachectl -e info -k restart 并且PHP 7应该正常运行。