一、以下是基於wampServer 的php 存取oracle資料庫的操作步驟:
第一步:讓PHP支援OCI
首先,安裝PHP的集成運行環境,網路上有很多集成,我安裝的是WampServer的(具體的安裝方法也可以參考之前寫的另一篇文章),安裝好後,從安裝目錄中找到php.ini文件,例如我本地的路徑是D:\wamp\bin\php\php5.3.3,將php.ini中的php_oci8.dll的;去掉,也就是把註解去掉,相當於可以使用php_oci8了。
相關推薦:《php教學》
第二步:然後wampserver運行後,將php>php extentions中將php_oci8打上勾
【其他的整合環境其實也是可以的,像是phpStudy,我們可以直接從php擴充的選項裡打勾對應的】。
第三個步驟:oracle 資料庫檔案設定
對於安裝有Oracle客戶端的PC機,可以在Oracle安裝設定文件,tnsnames.ora文件,此檔案路徑是安裝oracle的路徑,例如我本機的是
F:\oracle\product\10.2.0\client_1\NETWORK\ADMIN ,所連的192.168.1.198資料庫,其中的設定詳情如下(如果顯示 127.0.0.1 預設為本機):
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.198)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) )
第四步:偵測oci8是否設定成功
1.一般情況下,開啟localhost即能顯示phpinfo .php介面,裡面即為php 資訊。可採用 “Ctrl F”搜尋“oci”,查看是否有對應的oci模組,當然有一點php基礎的完全可以直接訪問自己編寫的文件,記得裡面加入“echo phpinfo();”即可。
2.不要高興太早,走到這一步,至少我是查不到的對應信息的,這時可以按照網上的一些建議,把php的ext目錄下的php_oci8. dll拷到system32目錄下
3.最後建議重啟服務,最好是重啟電腦(我在測試時發現,重啟服務沒用,有一次是無意中刷新出了oci擴展,所以如果操作方法沒錯,我建議進行重啟。)
二、程式碼測試遠端連線orcal 資料庫(建議可用自己的oracle客戶端試著是否能連接對方的服務端,以保證操作的成功率)
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2015/12/7 * Time: 16:25 */ echo 'ff'; //进行连接数据库的参数配置 $dbstr ="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.11.198)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (INSTANCE_NAME = orcl)))"; //phpinfo(); $conn = oci_connect('scott','tiger',$dbstr);//如果去掉最后一个参数或者为“ ”,默认连接本机 $stmt = oci_parse($conn, "select * from mono"); oci_execute($stmt); $nrows = oci_fetch_all($stmt, $results); if ($nrows > 0) { echo "<table border=\"1\">\n"; echo "<tr>\n"; foreach ($results as $key => $val) { echo "<th>$key</th>\n"; } echo "</tr>\n"; for ($i = 0; $i < $nrows; $i++) { echo "<tr>\n"; foreach ($results as $data) { echo "<td>$data[$i]</td>\n"; } echo "</tr>\n"; } echo "</table>\n"; } else { echo "No data found<br />\n"; } echo " $nrows Records Selected<br />\n"; oci_free_statement($stmt); oci_close($conn); ?>
(參考網友的一點說明)
#兩種方式和oracle資料庫建立連結:
1.$conn = oci_connect('username','password',"(DEscriptION=(ADDRESS=(PROTOCOL =TCP)(HOST=192.168.1.198)(PORT = 1521)) (CONNECT_DATA =(SID=orcl)))");
2.$conn = oci_connect('username','password','192.168.1.198/orcl');
有的時候第一種方式不行,使用第二種,裡面的幾個參數分別是使用者名稱、密碼、oracle服務位址,其中orcl是服務名稱(但在我的機器上,後者無法存取)
另外提供一個簡單的測試程式碼,相對而言,只是測試連接情況,更為方便:
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>php语句结束符</title> </head> <body> <?php $dbstr ="(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.11.102)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (INSTANCE_NAME = orcl)))"; $dbconn=oci_connect('scott','tiger',$dbstr); if($dbconn!=false) { echo "连接成功".'<br/>'; if(OCILogOff($dbconn)==true) { echo "关闭连接成功!".'<br/>';// } } else { echo "连接失败".'<br/>'; } ?> </body> </html>
總結提示:
使你的php支援oracle,依照以下步驟即可:
1.安裝php環境,找appserv或xampp,一鍵安裝,很方便。
2.把php的ext目錄下的php_oci8.dll拷貝到system32目錄下。
3.修改php.ini檔案中的配置,去掉 ;extention = php_oci8.dll,去掉前面的分號。
4.重啟apache。
注意:
1.有時候你不會注意到的一點失誤會浪費很多時間,我還要提醒的是,請記得打開oracle的服務監聽! !
2.請記得身為服務端的PC機,要關掉防火牆! !
3.apache的設定檔同樣重要,修改httpd.conf文件,Deny——>Allow
<Directory /> Options FollowSymLinks AllowOverride None Order deny,allow # Deny from all Allow from all #允许所有访问 Satisfy all </Directory> <Directory /> ... ... # Require local Options Indexes FollowSymLinks # onlineoffline tag - don't remove Order Deny,Allow Allow from all # Require local </Directory>
以上是php怎麼遠端連接oracle的詳細內容。更多資訊請關注PHP中文網其他相關文章!