本地windows下PHP連接遠程oracle遇到的諸多問題


任務目的:本地windows下PHP連接遠程服務器下的oracle。

必須必須 確定服務器的數據庫版本,如果本地的驅動和對方服務器版本不一致,會導致許多報錯。

已知的oracle版本  分為 32位的10G,11G,13G 64位的10G,11G,13G

我本機是64位的系統,開始就進去誤區,把所有版本的64位下載了一遍,結果 不管你怎么調,本地的驅動就是找不到oci方法。

然后目標定位到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);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM