安装 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”来查看它引用了哪些动态库。如果您的各种编译器标志或选项缺少包含到正确位置的内容,则可能是混合了错误的头文件和库。这可能会导致更令人困惑的行为,因为应用程序可能会启动,但在某些情况下会出现段错误。