【问题标题】:Zend server on Windows not loading php_ibm_db2.dllWindows 上的 Zend 服务器未加载 php_ibm_db2.dll
【发布时间】:2013-12-04 19:38:59
【问题描述】:

我花了一天的时间试图让我的 Zend 服务器在 localhost (Windows 8) 上读取 i5 系统上的 DB2 文件。

我遵循了很多指南并阅读了类似问题的答案,现在:

  • 我的机器上安装了 ibm express-C
  • 我在 ext\ 文件夹中有 php_ibm_db2.dll
  • application.ini 的 extension=php_ibm_db2.dll 指向正确的文件夹
  • 我的环境变量路径有 [...]C:\Program Files\ibm\gsk8\lib64;C:\Program Files (x86)\ibm\gsk8\lib;C:\PROGRA~1\IBM\SQLLIB \BIN;C:\PROGRA~1\IBM\SQLLIB\FUNCTION;C:\PROGRA~1\IBM\SQLLIB\SAMPLES\REPL;

但是重新启动服务器,在日志中,我发现“PHP 警告:PHP 启动:无法加载动态库 'C:\Program Files (x86)\Zend\ZendServer\lib\phpext\php_ibm_db2.dll'”

即使它是 dll 的正确路径。

而且服务器无法识别 db2_connect()(未定义)

知道发生了什么吗? 是否有可能是 Windows 8 64bit 的问题?

【问题讨论】:

    标签: php windows db2 zend-server


    【解决方案1】:

    我的猜测是 DLL 是为不兼容的 PHP 版本编译的。您可以在此处获取扩展的替代版本: http://sourceforge.net/projects/db2mc/files/IBM_DB2%20PHP%20Driver%20for%20Windows/

    我没有看到 PHP 5.5 的构建。这可能意味着如果不自己编译,您将无法使其与 PHP 5.5 一起使用。

    对于 PHP 5.4,请注意 PHP 的 ts(线程安全)和 nts(非线程安全)安装之间的区别。

    对于较旧的 PHP 版本,请确保获取使用兼容编译器构建的内容。您可能需要 VC9 (Visual C++ 9),因为它对应于 official PHP download

    【讨论】:

    • 首先,非常感谢您的回复。 Zend Server 版本:6.2.0 上运行的 php 版本是 5.4.21,禁用了线程安全。 php -m 返回 ibm_db2 但服务器加载时的警告仍在继续,IBM v4.2 的 Technology Explorer 确认:“PHP 数据库驱动程序检查:未找到 IBM_DB2 PHP 模块”。想我要放弃了... :(
    • 这个 .dll 是否仍然损坏? sourceforge.net/projects/db2mc/files/…
    • 无事可做,是我目前正在使用的(或试图...)我必须将 php_ibm_db2.pdb 放在某个地方吗?
    【解决方案2】:

    application.ini 中的 extension_dir 指向什么。看起来你已经指定了 extension= 并且 extension_dir 也有一些价值。因此可能会附加 2 条路径,从而导致错误

    如果情况如此,您能否检查上述情况并尝试通过更正扩展名中的路径和扩展名中的模块名称(php_ibm_db2.dll)来尝试。

    谢谢

    普雷文

    【讨论】:

    • 嗨,我发现 extension_dir 和扩展声明在 php.ini 中而不是在 application.ini 中(我的错)。无论如何,它们似乎是正确的:extension_dir="C:\Program Files (x86)\Zend\ZendServer\lib\phpext" extension=php_ibm_db2.dll 我确认 C:\Program Files (x86)\Zend\ZendServer\lib \phpext\php_ibm_db2.dll 是正确的路径。谢谢你的回复
    • 嗨,接下来我要检查的是 php -m 正确加载了 dll(让我们称它为独立的)......你的 PATH 设置是否被 zend(Apache)识别......如果相应PATH 设置对 Apache 不可见,那么很有可能找不到 dll 并因此出现错误。
      提示:可能需要检查 httpd.conf
    • 我查了一下,发现在[PHP Modules]下输入php -m,出现了ibm_db2,但是还是不行(而且不是被服务器加载的)。如果我尝试连接,我首先看到的是一条通知:“注意:使用未定义的常量 DB2_AUTOCOMMIT_ON - 在 C:\Program Files (x86)\Zend\ZendServer\data\libraries\Zend_Framework_1\1.12.3\ 中假设为 'DB2_AUTOCOMMIT_ON' library\Zend\Db.php on line 270" 也许有帮助...谢谢您的回复!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多