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 下!!!
謝謝(可能有疏忽的地方或不準確的,請評論提出)