我一直在尝试从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
对此问题的任何帮助都非常感激。
谢谢。
答案 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位二进制文件则不会有它。
祝你好运