我遇到了与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.
在我的Yii 2应用程序中,我看到了这个错误。
SQLSTATE= , SQLDriverConnect: -5005 [IBM][CLI Driver] SQL10007N Message "0" could not be retrieved. Reason code: "3".
问候!
答案 0 :(得分:0)
使用pecl重新安装ibm_db2解决了这个问题(pecl install ibm_db2)!