[英]DB2 connection failed php
我正在尝试通过PHP连接到远程DB2。 但是有一些问题。 我已经安装了IBM Application Developer客户端。
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。 这就是为什么我可以猜测这个问题就在这方面的原因。 但是即使这样,我也无法修复。
抱歉,如果我重复了一些关于stackoverflow的问题,但不幸的是,我发现的所有答案对我来说都是没有用的。
我正在使用Apache 2.2和PHP 5.4。 希望能对您有所帮助。
感谢您的任何答复!
您确定可以连接到服务器吗? 正确的端口,服务器,防火墙规则,用户名,密码,数据库名称?
您收到的SQL代码是什么。 尝试从PHP获取SQL代码,“连接到xx失败”是您自己的代码,因此对您没有帮助。
您是否安装了应用程序开发客户端? 您正在使用哪个DB2版本? ADCL很旧,适用于DB28。由于DB2 9.7的不同,客户端具有不同的名称,我认为您需要IBM Data Server客户端才能编译php模块。 有关更多信息,请访问以下网站: http : //www-01.ibm.com/support/docview.wss?uid=swg27016878
我认为您必须使用db2客户端对数据库服务器(节点)和本地计算机中的数据库进行分类。 看来您的PHP代码使用ODBC驱动程序,并且必须在本地进行配置。
您的连接字符串看起来像一个ODBC连接,其中PHP中的db2_connect函数需要:-
DATABASE=database;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=username;PWD=password;
我从来没有能够使ibm_db2或pdo_ibm在遥控器上工作。 如果DB2和Apache在同一台机器上(例如iSeries),则它们可以工作,但是如果主机正在连接到远程DB2,则它们不能工作。
如果您分别阅读了Doctrine2 PHP驱动程序,则发现它们在主机不是'localhost'或'127.0.0.1'的情况下重定向到ODBC。
该代码对我有用
<?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名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.