Php + ibm_db2错误

时间:2017-12-09 13:15:27

标签: php yii2 db2

我遇到了与DB2数据库的PHP连接问题。我的系统规格如下:

Operative System

[root@mxismspms POC]# uname -a Linux mxismspms.mx.ihost.com
2.6.18-419.el5 #1 SMP Wed Feb 22 22:40:57 EST 2017 x86_64 x86_64 x86_64 GNU/Linux

Php Version

php -v PHP 5.6.30 (cli) (built: Jan 19 2017 08:18:25)  Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Php Loaded modules 
php -m [PHP Modules] 
bz2 calendar Core ctype curl date dom ereg exif fileinfo filter ftp gettext hash **ibm_db2** iconv json ldap libxml mhash mssql mysql mysqli mysqlnd odbc openssl pcntl pcre PDO pdo_dblib pdo_ibm pdo_mysql PDO_ODBC pdo_sqlite Phar posix readline Reflection session shmop SimpleXML sockets SPL standard sybase_ct sysvmsg sysvsem sysvshm tokenizer wddx xml xmlreader xmlwriter xsl zip zlib

正如您所看到的,我正在使用 ibm_db2 驱动程序。主要问题是从Apache运行时与DB2数据库的连接不起作用。 我的php脚本如下:

$database = '****'; $user = '****'; $password = '****'; $hostname = '****'; $port = 5098;

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

if ($conn) {
    echo "Connection succeeded.";
    db2_close($conn); } else {
    echo "Connection failed.";
    print db2_conn_errormsg(); }

从CLI运行时它运行正常,但是当我从浏览器运行时它不起作用。

php test2.php 
Connection succeeded.

也可以尝试使用apache用户。

su - apache -c 'php /var/www/html/POC/test2.php'        
Connection succeeded.

从浏览器中我没有太多细节而且它不起作用。 Reference 1

最后,我给你我的phpinfo驱动程序和环境细节。 phpinfo environment

在我的Yii 2应用程序中,我看到了这个错误。

SQLSTATE= , SQLDriverConnect: -5005 [IBM][CLI Driver] SQL10007N Message "0" could not be retrieved. Reason code: "3".

问候!

1 个答案:

答案 0 :(得分:0)

使用pecl重新安装ibm_db2解决了这个问题(pecl install ibm_db2)!