[英]Apache FastCGI Python Linking Error
我有一个正在使用的FastCGI Web服务,由于以下错误,当前已中断:
ImportError: /proj/issm-web/trunk/lib/IssmConfig.so: undefined symbol: PyUnicodeUCS2_FromString
出现此错误的原因是,我使用的Python安装与系统范围的安装不同。 显然,当我重新启动Apache2服务器时,会选择错误的库!
为了解决这个问题,我尝试修改:
/etc/apache2/envvars
在此文件中,我添加了以下内容:
export LD_LIBRARY_PATH="/proj/issm-web/trunk/externalpackages/python/install/lib:${LD_LIBRARY_PATH}"
ldd `which python` >> ${TEST_FILE}
这给出了令人满意的结果:
linux-vdso.so.1 => (0x00007ffff25ff000)
libpython2.7.so.1.0 => /proj/issm-web/trunk/externalpackages/python/install/lib/libpython2.7.so.1.0 (0x00007f236db18000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f236d8db000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f236d51b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f236d317000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f236d114000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f236ce17000)
/lib64/ld-linux-x86-64.so.2 (0x00007f236def2000)
换句话说,不仅启动了正确的Python可执行文件,而且还获得了正确的库!
此外,我可以确认:
/proj/issm-web/trunk/externalpackages/python/install/lib/libpython2.7.so.1.0
包含相应的符号:
readelf -s $ISSM_DIR/externalpackages/python/install/lib/libpython2.7.so.1.0 | grep'PyUnicodeUCS2_FromString'
316: 00000000000bd0e0 312 FUNC GLOBAL DEFAULT 11 PyUnicodeUCS2_FromStringA
606: 00000000000bd220 58 FUNC GLOBAL DEFAULT 11 PyUnicodeUCS2_FromString
4036: 00000000000bd0e0 312 FUNC GLOBAL DEFAULT 11 PyUnicodeUCS2_FromStringA
4241: 00000000000bd220 58 FUNC GLOBAL DEFAULT 11 PyUnicodeUCS2_FromString
不幸的是,我仍然看到相同的错误。 我唯一能想到的是,当我重新启动Apache时,所设置的环境变量未得到遵守。
以下是一些有用的信息:
apache2 -version
Server version: Apache/2.2.22 (Ubuntu)
Server built: Jul 12 2013 13:37:10
uname -a
Linux thwaites 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
谁能帮我解决这个问题?
问题最终在于FastCGIServer是如何启动的。 不幸的是,默认情况下不会从Apache传播环境变量。
为了将LD_LIBRARY_PATH传递给FastCGIServer,我必须进行修改
/etc/apache2/sites-available/default
包括:
-initial-env LD_LIBRARY_PATH
启动FastCGIServer时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.