我有一个全新安装的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
我在谷歌上搜索过但没有得到任何具体的解决方案。
答案 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
应该正常运行。