无法加载从属模块libdb2.a(shr.o)

时间:2014-06-24 11:52:49

标签: php apache db2 aix

我一直在尝试从PHP脚本连接到DB2。

当我在ibm_db2.so中包含正确的php.ini文件并在此之后重启apache时,它将无法加载模块。

同样在apache错误日志中,我看到一些消息,如:

PHP Warning: PHP Startup: Unable to load dynamic library 
'/opt/freeware/lib/php/modules/ibm_db2_5.2.1.so' -/t0509-022 
Cannot load module '/opt/freeware/lib/php/modules/ibm_db2_5.2.1.so' \n\t0509-150
Dependent module libdb2.a(shr.o) could not be loaded. \n\t0509-022

对此问题的任何帮助都非常感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

可以粘贴输出:

dump -H /opt/freeware/lib/php/modules/ibm_db2_5.2.1.so

您会看到如下行:

INDEX  PATH                          BASE                MEMBER              
0      /usr/lib:/lib:/usr/lpp/xlC/lib                                         
1 ...

第0个条目用于查找名为libdb2.a的文件,其成员为shr.o.这是如果没有设置LIBPATH。如果设置了LIBPATH,则使用LIBPATH中的组件。加载后找不到该文件。

或者......它可以找到它但无法加载它。如果你能在装载机应该看到的地方找到它,那么就提取出来:

ar x libdb2.a shr.o

然后做:

dump -H shr.o

冲洗并重复...即发现它依赖于并查看是否存在这些依赖性。 shr.o也有可能不是相同的比特。即你有64位应用程序,shr.o是32位目标文件。这会让我感到惊讶,但它可能(如果我没记错的话)。要检查位大小,请执行以下操作:

file shr.o

它将有" 64位"在描述中,如果它是64位二进制文​​件,如果它是32位二进制文​​件则不会有它。

祝你好运