apache 无法加载 mod_wsgi:提示“缺少符号”

apache 无法加载 mod_wsgi:提示“缺少符号”

安装 mod_wsgi 后运行时apachectl configtest出现以下错误消息:

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

我使用 python 2.7.8 从源代码编译了 mod_wsgi 3.5。Apache 是版本 2.2.11。经过大量谷歌搜索,没有发现类似的问题。可能是 apache 试图使用 python 的系统版本,而不是我安装的版本(也是我用来编译 mod_wsgi 的版本)。

知道是什么原因导致了这个错误以及如何纠正它吗?

答案1

如果您正在编译 Apache 和 Apache 所依赖的其他模块或应用程序,并且它们与系统范围的 LD 配置位于不同的位置,那么您的启动脚本可能应该指定 LD_LIBRARY_PATH。

来自我自己的一个服务器的示例,其中包含大量自定义编译代码:

LD_LIBRARY_PATH="/opt/apache/lib:/opt/zlib/lib:/opt/openssl/lib";export LD_LIBRARY_PATH

您还可以对任何模块使用“ldd”来查看它引用了哪些动态库。如果您的各种编译器标志或选项缺少包含到正确位置的内容,则可能是混合了错误的头文件和库。这可能会导致更令人困惑的行为,因为应用程序可能会启动,但在某些情况下会出现段错误。

相关内容