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

來源:互聯網
上載者:User

標籤:

任務目的:本地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遇到的諸多問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.