【问题标题】:Dependent module libdb2.a(shr.o) could not be loaded无法加载依赖模块 libdb2.a(shr.o)
【发布时间】:2014-08-14 16:12:38
【问题描述】:

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

当我在php.ini 中包含正确的ibm_db2.so 文件并在此之后重新启动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

非常感谢您对此问题的任何帮助。

谢谢。

【问题讨论】:

  • 看起来您没有正确安装 DB2 客户端。
  • 我认为问题出在httpd.conf 中DB2 的配置上。 httpd.conf中是否需要包含db2profile路径
  • 不确定您的意思:httpd.conf 中没有 DB2 配置项。但话又说回来,如果你这么认为的话......
  • 如何解决这个问题。 Dependent module libdb2.a(shr.o) could not be loaded. \n\t0509-022因为我强烈感觉DB2客户端安装正确。
  • 如果 DB2 客户端设置正确,那么另一个可能的原因是 PHP 环境没有指向 DB2 库,因此加载器不知道在哪里查找它们。

标签: php apache db2 aix


【解决方案1】:

你能粘贴以下输出吗:

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 位二进制则没有。

祝你好运

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多