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

时间:2015-08-11 01:38:57

标签: php derby

我希望有人可以帮我解决这个错误。我知道它弹出由于php没有识别php_ibm_db2.dll模块,但我已经尝试了一切,没有任何作用。我寻找过教程,但其中很多都是陈旧的,并且引用了旧版本的IBM产品,这使我更难理解。

此处发布的较早的类似问题要么得不到回答,要么模糊地解决。

以下是基础知识:

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

我需要使用php连接到数据库并检索数据。我尝试使用odbc但是我收到了IBM DB2 ODBC驱动程序和用于ODBC的IBM数据服务器驱动程序的“功能不受支持”,因此我废弃了这个想法并决定使用db2函数。

这是我尝试过的:

  • here下载扩展程序:我获得了5.5 ts版本并将.dll复制到PHP的ext文件夹中
  • 在WAMP链接的php.ini中添加了extension = php_ibm_db2.dll行
  • IBM download page安装了所有内容。这是愚蠢的,但我不知道该怎么办
  • 检查PATH,.ini或.conf设置是否未指向正确的文件夹*
  • 重新启动WAMP
  • 重新启动的计算机

*我以前将PHP配置为包含Firebird标头,所以我知道我修改了正确的.conf和amp;的.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);
}

提前谢谢

1 个答案:

答案 0 :(得分:1)

感谢@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. 要为x32 ODBC驱动程序配置DSN,请使用C:\ Windows \ SysWOW64 \ odbcad32.exe中的x32 ODBC数据源管理器。

  5. 重新启动WAMPServer并检查PHPInfo()。 ibm db2现在应该拥有它自己的部分

  6. 我希望这对某人有用。

    OR

    只需从PECL下载合适的版本。我刚刚发现了这一点,我感到非常愚蠢。