繁体   English   中英

Apache FastCGI Python链接错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM