2013-04-23 83 views
0

我试图通过PHP连接到远程DB2。但有一些问题。我已经安装了IBM Application开发人员客户端。DB2连接失败php

的phpinfo()输出:

 

    
     IBM DB2, Cloudscape and Apache Derby support enabled 
     Module release 1.9.4 
     Module revision $Revision: 327944 $ 
     Binary data mode (ibm_db2.binmode) DB2_BINARY 
 

然后,我有它看起来像一个php文件:

 

    
     $database = 'MyDB'; 
     $user = 'db2inst1'; 
     $password = 'mypassword'; 
     $hostname = '1.1.1.1'; 
     $port = 50000; 

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

     $conn = db2_connect($conn_string, '', ''); 
     if ($conn) { 
      echo "connection to $database succeeded"; 
     } else { 
      echo "connection to $database failed"; 
      echo db2_conn_errormsg(); 
     } 
 

,并试图执行这个文件,我有“连接MYDB失败”,并从db2_conn_errormsg没有明显的反应(),这实际上是让我百思不得其解

不幸的是,我还没有得到直通道与数据库的远程服务器。但几个月前,当我使用其他客户端时,我成功连接到了这个数据库。但是那段时间我不需要安装IBM ADCL。这就是为什么我可以猜测这个问题在这方面。但即使如此,我无法修复它。

很抱歉,如果我重复的计算器一些问题,但所有的答案,我发现,是不幸的是对我没用。

我使用的Apache 2.2和PHP 5.4。 希望你能帮上忙。

感谢您的回复!

回答

1

你确定你有连接到服务器?正确的端口,服务器,防火墙规则,用户名,密码,数据库名称?

什么是您收到的SQL代码。尝试从PHP获取SQL代码,“连接到xx失败”是您自己的代码,因此无法帮助您。

是否安装了应用程序开发的客户端?您正在使用哪个DB2版本? ADCL是旧的,它是针对DB2 8的。从DB2 9.7开始,客户端具有不同的名称,我认为您需要IBM Data Server客户端才能编译php模块。欲了解更多信息,请查看以下网站:http://www-01.ibm.com/support/docview.wss?uid=swg27016878

我认为您必须使用db2客户端对本地计算机中的数据库服务器(节点)和数据库进行编目。看起来您的PHP代码使用ODBC驱动程序,并且必须在本地进行配置。

0

连接字符串的样子,其中作为在PHP中db2_connect功能需要一个ODBC连接: -

DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password; 

这是对PHP web page.

0

我从来没有能够得到IBM_DB2或pdo_ibm工作的一个远程。如果DB2和Apache位于同一台计算机上(如iSeries),但它们在主机连接到远程DB2时则不起作用。

如果你读每个Doctrine2 PHP驱动程序,你会发现他们重定向到ODBC如果主机不是“本地主机”或“127.0.0.1”。

此代码对我的作品

<?php 
if (!$db = odbc_connect ("AS400", $user, $password)) 
    echo 'error!'; 

$result = odbc_exec($db, "select count(*) from $table"); 
while (odbc_fetch_row($result)) { 
    var_dump($result); 
    print_r($result); 
    echo "\n"; 
    echo odbc_result($result, 1)."\n"; 
} 

odbc_close($db); 

AS400是ODBC定义DSN名。