標籤:
任務目的:本地windows下PHP串連遠程伺服器下的oracle。
必須必須 確定伺服器的資料庫版本,如果本地的驅動和對方伺服器版本不一致,會導致許多報錯。
已知的oracle版本 分為 32位的10G,11G,13G 64位的10G,11G,13G
我本機是64位的系統,開始就進去誤區,把所有版本的64位下載了一遍,結果 不管你怎麼調,本地的驅動就是找不到ob方法。
然後目標定位到32位,32位如果下載錯版本,會報這個錯。
oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system - please check that PATH includes the directory with Oracle Instant Client libraries
找對版本後,下載下來,運行成功。
其中我的本地由於是新開的,所以很多設定檔都沒有,導致執行的過程中缺少各種檔案,按照報錯缺少的檔案逐個去官網(權威點的網站)下載,放到位置可。
具體操作步驟如下:
1.開啟php.ini,把extension=php_oci8.dll開啟。
2.其中下載oracle包中的oci.dll房到 C盤的sys32?64看你自己的系統是多少位的。
3.把oracle包中的所有檔案拷到php擴充檔案夾一份,apache的bin目錄一份。
如果還是不行 那就把php的擴充php_oci8.dll也放到sys32裡一份,這點不太確定,查了好多資料都這麼說,我第一部就放進去了。
其中改了許多環境變數什麼的,最後問題解決之後才發覺都用,又都刪了。
最後附上php串連oracle的代碼(其中oci_connect中 的SID就是常說的資料庫,但是oracle中好像普遍都叫服務名,你就當成資料庫名理解就行)
$conn = oci_connect(‘username‘,‘password‘,"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.0.180)(PORT = 1521))(CONNECT_DATA =(SID=toplw)))");$sql = "select * from table"; $ora_test = oci_parse($conn,$sql); //編譯sql語句 oci_execute($ora_test,OCI_DEFAULT); //執行 echo "<pre>";while($r=oci_fetch_row($ora_test)) //取回結果 { print_r($r);}
本地windows下PHP串連遠程oracle遇到的諸多問題