我试图运行Apache在Mac OSX优胜美地使用MacPorts的PHP(mod_php53.so)。请注意,我使用的不是MacPorts的Apache,而是Yosemite的Apache和MacPorts的PHP。这在过去与OSX小牛队和山狮队合作得很好。
我得到这个错误时运行 /usr/sbin/apachectl-t在优胜美地:
httpd:/private/etc/apache2/httpd的第228行出现语法错误。conf:无法加载/opt/local/apache2/modules/mod_php53。所以进入服务器:dlopen(/opt/local/apache2/modules/mod_php53.so,10):库未加载:/opt/local/lib/libaprutil-1.0。动态库\n引用自:/opt/local/apache2/modules/mod_php53。所以\n原因:不兼容的库版本:mod_php53。因此需要6.0版。0或更高版本,但libaprutil-1.0。dylib提供了4.0版。0
实际上,/opt/local/lib/libaprutil-1.0。动态库的当前版本是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。
我已经尝试设置DYLD\u LIBRARY\u PATH
环境变量,但没有帮助。
有什么想法吗?
当环境包含DYLD\u LIBRARY\u PATH=/usr/lib
时会发生这种情况。如果不解决这个问题,它应该会起作用。
在OS X上使用绝对路径引用库。您正确地注意到/0025/loce/apache2/模块/mod_php53.so
使用其绝对路径引用/opt/loce/lib/libaprutil-1.0.dylib
。但是,在存在DYLD_LIBRARY_PATH
的情况下,加载程序会忽略目录组件,并在DYLD_LIBRARY_PATH
中指定的目录中搜索文件名。
您看到的错误消息具有误导性:它试图告诉您,试图处理/opt/local/lib/libaprutil-1.0的代码中发生了错误。dylib
load命令(由于env变量而被转移)。
另外,请注意,由于MacPorts是针对MacPorts Apache构建其PHP的,因此您的PHP模块不一定与系统Apache二进制兼容。这可能对你有用,但那只是巧合。