Fatal error: Call to undefined function db2_connect() using WAMP when trying to connect to Derby DB

Fatal error: Call to undefined function db2_connect() using WAMP when trying to connect to Derby DB

我希望有人能帮我解决这个错误。我知道它是由于 php 无法识别 php_ibm_db2.dll 模块而弹出的,但我已经尝试了所有方法,但没有任何效果。我找了教程,但是很多都是很老的,参考了旧版本的IBM产品,让我更难理解。

此处发布的较早的类似问题要么无人回答,要么含糊其辞。

以下是基础知识:

我需要使用 php 连接到数据库并检索数据。我尝试使用 odbc,但我收到了 'Function Unsupported' 与 IBM DB2 ODBC Driver 和 IBM Data Server Driver for ODBC,所以我放弃了这个想法并决定改用 db2 函数。

这是我尝试过的方法:

*我之前配置 PHP 以包含 Firebird headers,所以我知道我修改了正确的 .conf 和 .ini。 PHP文件夹也在环境变量中定义。

PHP 错误日志包含以下内容:

PHP Warning:  PHP Startup: Unable to load dynamic library 'c:/wamp/bin/php/php5.5.12/ext/php_ibm_db2.dll' - %1 is not a valid Win32 application.

代码:

$username = "username";
$password = "password";
$hostname = "localhost";
$port = "1527";
$database="C:\Users\me\Desktop\dbname"; //not real definition

$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;"."HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$username;PWD=$password";

$connection = db2_connect($conn_string, '', '');
if ($connection) {
   echo "Connection succeeded."."\n";
}
else {
   echo "Connection failed."."\n";
   echo db2_conn_errormsg ($connection);
}

提前致谢

感谢@RiggsFolly 和一个我没能再次找到的问题link,我现在想通了。

对于任何试图在 Windows x64 中启用 db2 功能并认为 php.net 安装指南不是很具体的人,这里是步骤(或者至少是我用来解决它的步骤):

  1. 安装 32 位 WAMPServer

  2. 安装IBM Express-C x32。这与 IBM DB2 ODBC 驱动程序一起提供。

  3. 根据您的PHP版本下载php_ibm_db2.dll。复制到 PHP 扩展文件夹并在 PHP.ini

  4. 中启用它
  5. 要为 x32 ODBC 驱动程序配置 DSN,请使用 C:\Windows\SysWOW64\odbcad32.exe.

  6. 中的 x32 ODBC 数据源管理器
  7. 重新启动 WAMPServer 并检查 PHPInfo()。 ibm db2 现在应该有它自己的部分

我希望这对某人有用。

只需从 PECL 下载合适的版本即可。我刚刚发现,我觉得超级愚蠢。