致命错误:尝试连接到Derby DB时,使用WAMP调用未定义的函数db2_connect()


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

我希望有人能帮助我解决这个错误。我知道它弹出由于php不识别php_ibm_db2.dll模块,但我已经尝试了一切,没有工作。我找了一些教程,但是很多都是很老的,而且使用的是IBM产品的旧版本,这让我很难理解。

这里张贴的旧的类似问题要么没有答案,要么模糊地解决了。

以下是基本内容:

  • 系统:Windows 7 Pro 64bit
  • WAMP: 2.5 64bit (Apache是2.4.9 &PHP是5.5.12)
  • 数据库:Derby,与WAMP/localhost
  • 位于同一台计算机上

我需要使用php连接到数据库并检索数据。我尝试使用odbc,但我收到了"功能不支持"与IBM DB2 odbc驱动程序和IBM数据服务器驱动程序的odbc,所以我放弃了这个想法,并决定用DB2函数代替。

这是我尝试过的:

  • 从这里下载扩展:我得到了5.5 ts版本,并将.dll复制到PHP的ext文件夹
  • 在php.ini中添加了WAMP链接的扩展名=php_ibm_db2.dll行
  • 从IBM下载页面安装了所有内容。这是愚蠢的,但我不知道该做什么了
  • 检查PATH, .ini或.conf设置是否没有指向正确的文件夹*
  • 重启WAMP
  • 重启计算机

*我之前将PHP配置为包含Firebird头文件,所以我知道我修改了正确的.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和一个我没能再次找到链接的问题,我现在明白了。

对于那些试图在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中的x32 ODBC数据源管理员。

  6. 重启WAMPServer,检查PHPInfo()。

我希望这将对某人有用。

只需从PECL下载合适的版本即可。