我正在尝试使用MacPorts的PHP(mod_php53.so)在Mac OSX Yosemite中运行Apache。请注意,我没有使用MacPorts的Apache,而是使用Yosemite的Apache和MacPorts的PHP。这在过去与OSX Mavericks和Mountain Lion一起运作良好。
在Yosemite中运行/ usr / sbin / apachectl -t时出现此错误:
httpd:/private/etc/apache2/httpd.conf第228行的语法错误:无法将/opt/local/apache2/modules/mod_php53.so加载到服务器:dlopen(/ opt / local / apache2 / modules / mod_php53.so,10):未加载库:/opt/local/lib/libaprutil-1.0.dylib\n引用自:/opt/local/apache2/modules/mod_php53.so\n原因:不兼容的库版本:mod_php53。所以需要版本6.0.0或更高版本,但libaprutil-1.0.dylib提供版本4.0.0
实际上,/ opt / local / lib / libaprutil-1.0.dylib当前版本是6.4.0,所以它应该可以工作。
otool -L /opt/local/lib/libaprutil-1.0.dylib
/opt/local/lib/libaprutil-1.0.dylib:
/opt/local/lib/libaprutil-1.0.dylib (compatibility version 6.0.0, current version 6.4.0)
我猜Apache正在加载位于/ usr / lib中的系统的libaprutil-1.0.dylib:
otool -L /usr/lib/libaprutil-1.0.dylib
/usr/lib/libaprutil-1.0.dylib:
/usr/lib/libaprutil-1.0.dylib (compatibility version 4.0.0, current version 4.0.0)
这是令人困惑的,因为错误消息明确指出MacPorts的libaprutil由于版本不兼容而未加载,但我想它正在尝试使用系统的libaprutil,并且不知道如何强制Apache加载MacPorts的libaprutil。 / p>
我已经尝试设置DYLD_LIBRARY_PATH
环境变量,但这没有帮助。
有什么想法吗?
答案 0 :(得分:2)
当环境包含DYLD_LIBRARY_PATH=/usr/lib
时会发生这种情况。取消设置它应该有效。
使用OS X上的绝对路径引用库。您使用其绝对路径正确注意到/opt/local/apache2/modules/mod_php53.so
引用/opt/local/lib/libaprutil-1.0.dylib
。但是,在DYLD_LIBRARY_PATH
存在的情况下,加载程序会忽略目录组件并在DYLD_LIBRARY_PATH
中指定的目录中搜索文件名。
您看到的错误消息具有误导性:它试图告诉您尝试处理/opt/local/lib/libaprutil-1.0.dylib
加载命令的代码中发生错误(由于env变量而被转移)。
另外,请注意,由于MacPorts针对MacPorts Apache构建其PHP,因此您的PHP模块不一定与Apache系统二进制兼容。它可能适合你,但这只是巧合。