PHP DB2 Connection已检测到通信错误

时间:2015-06-27 02:45:01

标签: php db2

我尝试使用db2cli odbc模块和odbc_connect连接到DB2 / AS400远程数据库,但返回下一个错误:

  

执行失败:[unixODBC] [IBM] [CLI驱动程序] SQL30081N A.   已检测到通信错误。通信协议正在   使用:“TCP / IP”。正在使用的通信API:“SOCKETS”。地点   检测到错误的地方:“10.10.100.5”。沟通功能   检测错误:“recv”。协议特定的错误代码:“”,   “”,“0”。 SQLSTATE = 08001

这是我的PHP代码:

<?php

$database = 'xxxx';
$user = 'xxxx';
$password = 'xxxx';
$hostname = '10.10.100.5';
$port = '55000';
$driver = 'DB2';

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

if (!$db = odbc_connect ($conn_string, $user, $password)) {
     print("Execution failed:\n");
}

else echo 'Success!';


odbc_close($db);

请帮帮我!!

1 个答案:

答案 0 :(得分:0)

我不熟悉AS400,但在Linux / UNIX上,当在服务器端未正确设置TCP / IP通信时会发生此错误。我要检查两件事(在Linux / UNIX服务器上,不确定AS400等价物):

  1. netstat -na
  2. db2set DB2COMM=TCPIP
  3. 第一个命令将返回打开的TCP / IP侦听器列表。您的端口55000应该在列表中。如果不是,则表示服务器未打开通信。

    第二部分启用DB2中的TCP / IP通信。请注意,/etc/servicesSVCENAME DBM CFG参数存在依赖关系。必须重新启动服务器才能使DB2COMM生效。正确启用后,DB2应该开始在配置的端口上进行侦听。

    如果这些都没有帮助,那么防火墙可能会阻止对DB2服务器的访问。

    如果此回复不适用于AS400,我再次道歉。