為 php 配置客戶端 ibm_db2
我正在安裝一個帶有 nginx 和 php 的 RHEL 伺服器,它可以連接到 db2 數據庫,下載並安裝“IBM Data Server Client”包,還通過以下方式安裝 pecl 庫:
pecl 安裝 ibm_db2
但是,當我進行連接測試時,我會響應以下錯誤:
$$ IBM $$ $$ CLI Driver $$SQL10007N 無法檢索到消息“0”。原因程式碼:“3”。SQLCODE = -1390
我正在測試的程式碼是:
<?php $database = 'mydb'; $user = 'usr'; $password = 'pass'; $hostname = 'ipaddr'; $port = 9501; $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 db2_conn_error(); echo db2_conn_errormsg(); }
我錯過了什麼嗎?
編輯:
在網上搜尋我在phpe-ditors中找到的這個:
例如,如果您在 /home/db2inst1/ 中創建了一個名為 db2inst1 的 DB2 實例,則可以將以下行添加到 php.ini:
ibm_db2.instance_name=db2inst1
如果未在 php.ini 中設置此選項,則必鬚髮出以下命令來修改環境變數以啟用對 DB2 的訪問:
bash$ 源 /home/db2inst1/sqllib/db2profile
要使啟用 PHP 的 Web 伺服器能夠訪問這些功能,您必須在 php.ini 中設置 ibm_db2.instance_name 配置選項,或者在 Web 伺服器啟動腳本(通常是 /etc/init.d/httpd或 /etc/init.d/apache)。
問題是我不知道 ibm_db2.instance_name 的值是什麼
任何想法 ?
在@mustaccio 的幫助下,實現了以下操作:
首先我添加了使用者 db2inst1:
db2inst1 使用者添加
然後,我生成了實例(不管它是什麼意思)
/opt/ibm/db2/V10.5/instance/db2icrt db2inst1
編輯 php 配置文件 (/etc/php.ini) 以添加實例:
extension = / usr/lib64/php/modules/ibm_db2.so ibm_db2.instance_name = db2inst1
編輯php-fpm服務的初始化文件(/etc/init.d/php-fpm),在我的例子中是執行php的,每次執行該服務的使用者下做db2profile腳本的源碼開始。
#for DB2 . /opt/ibm/db2/V10.5/cfg/db2profile
最後重啟服務:
php-fpm 重啟服務
非常感謝您的評論。