PHP v5.2.6 鏈接遠程Oracle數據庫
根據需求,要通過服務器A,使用PHP訪問並操作服務器B的Oracle數據庫,對其進行insert操作。
服務器A:
Windows server 2003;PHP v5.2.6(32位);IIS服務;
服務器B:
Oracle數據庫;
主要工作,實現服務器A對B進行連接訪問。
step1:
在服務器上安裝Oracle客戶端;
可在網盤鏈接:https://pan.baidu.com/s/1NPWV2AlxQRgVyVslU0r3lg(提取碼:9jdn)下載,其中包括11版本和10版本的basic和sqlplus組合(均為32位),兩個都要下載,我這裏用的是10。
首先,將下載的basic文件解壓在服務器A的D:\oracle\instantclient10_1 下,將sqlplus解壓,並將全部文件復制到和basic同樣的目錄下D:\oracle;
將D:\oracle\instantclient10_1 下的oci.dll文件,copy到C:\WINDOWS\system32 下;
新建文件TNSNAMES.ORA,編輯內容為:
------------------------------------------
****(任意name) =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = *****(服務器B的IP地址))(PORT = 1521))
)
(CONNECT_DATA =
(SID = ****(任意name
(SERVER = DEDICATED)
)
)
------------------------------------------
完成後將其放在D:\oracle\instantclient10_1下,覆蓋掉;
step2:
配置環境變量;
在環境變量Path中,添加D:\oracle\instantclient10_1 (該路徑為oracle客戶端的路徑);
新建環境變量名為TNS_ADMIN,路徑為D:\oracle\instantclient10_1 (該路徑為TNSNAMES.ORA文件的路徑);
新建環境變量名為NLS_LANG,內容為 SIMPLIFIED CHINESE_CHINA.ZHS16GBK (該變量為語言控制
同時,確保path中,有C:\WINDOWS\system32路徑的指向並且正確;
step3:
通過cmd窗口,執行連接服務器B的操作,測試連接:
當看到上圖時為連接成功!
step4:
將服務器A的PHP環境下的php5ts.dll 和ext文件下的php_oci8.dll文件同時copy到C:\WINDOWS\system32下;
(前提確保PHP環境已經配置安裝成功,這裏不介紹PHP的安裝配置);
修改php.ini配置文件,將extension=php_oci8.dll的註釋符號去掉
之後,編寫一個簡單的php文件,test.php ,使用phpinfo();
訪問該php頁面可以看到oci8模塊已啟用!
step5:
修改test.php文件,將phpinfo()刪掉,使用php訪問連接Oracle數據庫,並進行查詢:
再次訪問test.php 文件:成功會看到
到這裏,就實現了服務器A通過PHP鏈接操作服務B的Oracle數據庫了!!!
-----------------------------------------------------------------------
註意:
1.如果你的php版本是大於php v5.1的,不能安裝Oracle9的客戶端,因為5.1版本之後只兼容Oracle10以後的客戶端!!!(我在搭建環境時,主要被Oracle9版本困擾住,起初不知道PHP v5.1之後的版本不兼容Oracle9,只支持Oracle10之後的版本)
2.確保環境變量配置正確和完整!!!有C:\windows\system32 的配置!!!(因為可能會由於你之前安裝和卸載程序時的錯誤操作使其丟失或指向不對)
3.將oracle客戶端中的oci.dll ,php下的php5ts.dll ,php中ext下的php_oci8.dll ,復制到C:\windows\system32 下!!!
謝謝(可能有疏忽的地方或不準確的,請評論提出)
PHP v5.2.6 鏈接遠程Oracle數據庫