簡體   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