在安装apachectl configtest后运行mod_wsgi时,会收到以下错误消息:
httpd: Syntax error on line 117 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_wsgi.so into server: dlopen(/usr/libexec/apache2/mod_wsgi.so, 10): Symbol not found: _PyEval_ReleaseLock\n Referenced from: /usr/libexec/apache2/mod_wsgi.so\n Expected in: dynamic lookup\n
我用python2.7.8从源代码中编译了mod_wsgi 3.5。Apache是2.2.11版本。大范围的谷歌搜索没有发现类似的问题。apache可能正在尝试使用系统版本的python,而不是我已经安装的系统版本(也是我用来编译mod_wsgi的版本)。
知道是什么导致了这个错误吗?如何纠正呢?
发布于 2015-01-01 14:36:17
如果您正在编译Apache和其他Apache所依赖的模块或应用程序,并且它们位于与系统宽LD混淆不同的位置,那么您的启动脚本可能会指定LD_LIBRARY_PATH。
示例来自我自己的服务器之一,该服务器具有大量自定义编译代码:
LD_LIBRARY_PATH="/opt/apache/lib:/opt/zlib/lib:/opt/openssl/lib";export LD_LIBRARY_PATH您还可以对任何模块使用"ldd“来查看它所引用的动态库。如果您的各种编译器标志或选项没有包含到正确的位置,则可能会出现错误头和库的混合。这可能会导致更令人困惑的行为,因为应用程序可能会启动,但在特定条件下可能会出现分段错误。
https://serverfault.com/questions/654899
复制相似问题