星期五, 六月 13, 2008

Debian 安裝設定 PHP 連 Oracle extension(OCI8)

Debian Linux 安裝 PHP, 然後要用此 PHP 去連 Oracle, 不過預設 Orace connect 是沒有編進 PHP 裡面的, 但是又不想要把 PHP 重新 make, 為了要維護方便, 所以就想辦法來把他編成 Modules, 在 Pecl 找到 oci8, 一切就方便多囉~

Debian 安裝 PHP Pecl oci connection

安裝 OCI8 步驟(安裝 PHP 連 Oracle Version 10.2.0.4 的 OCI 版本)

  1. Oracle Database Instant Client 下載 Client/SDK (Version 10.2.0.4 Instant Client Package - Basic 和 SDK)
  2. apt-get install php-pear php5-dev
  3. mkdir -p /opt/oracle
  4. cd /opt/oracle
  5. unzip ~/oracle-instantclient-basic-10.2.0.4-1.i386.zip # instantclient_10_2
  6. unzip ~/oracle-instantclient-devel-10.2.0.4-1.i386.zip # instantclient_10_2/sdk/
  7. mv instantclient_10_2 instantclient
  8. cd /opt/oracle/instantclient
  9. ln -s libclntsh.so.10.1 libclntsh.so
  10. ln -s libocci.so.10.1 libocci.so
  11. pecl install oci8
    問題: Please provide the path to ORACLE_HOME dir. Use 'instantclient,/path/to/instant/client/lib' if you're compiling against Oracle Instant Client [autodetect] :
    輸入: shared,instantclient,/opt/oracle/instantclient
  12. pecl 裝完後, so 檔會放置於: /usr/lib/php5/20060613+lfs/oci8.so, 此檔案就是 php oci8 extension 囉~
  13. vim /etc/php5/conf.d/oci8.ini # 建立 oci8.ini 檔案(讓 apache 載入時讀取此 extension), 內容如下:
    extension=oci8.so
  14. /etc/init.d/apache2 reload
  15. 這樣子就完成 PHP OCI8 的安裝囉~

測試

vim oci.php

<?php
oci_connect();
?>

php oci.php # 執行

  • Warning: oci_connect() expects at least 2 parameters, 0 given in oci.php on line 2 # 看到這個就代表成功了~
  • Fatal error: Call to undefined function oci_connect() in oci.php- on line 2 # 看到這樣子就是沒裝好或沒設好.

寫個簡單的 Oracle Connect 的 Insert/Select 程式測試:

<?php
$dbh = oci_connect ('ACCOUNT', 'PASSWORD', '//10.0.0.1/DBNAME') or die('OCI Connect error');
$res = oci_parse($dbh, 'INSERT INTO "USERS"(ID, NAME, PASSWORD) VALUES(1, "admin", "admin_password")') or die('Insert error');
//$res = oci_parse($dbh, 'SELECT * FROM "USERS"') or die('Select user error');
oci_execute($res);

while ($row = oci_fetch_assoc($res)) {
    foreach ($row as $item) {
        echo $item . "\n";
    }
}
?>

其它參考

其它附註

Oracle SQL Developer 設定

  • 設定 Role 要選 default, 若選 sysdba, SQL 語法 SELECT Table 前就需要加 db name
  • DB insert 需要用 "單引號" 括起來(Oracle 認定的字串需要用 單引號 選起來), 雙引號是對分辨 Table name 大小寫用的.
相關標籤

this is comment icon 關於連線問題 [回覆]

不好意思,請問一下 我的環境如下: 兩台主機都是 Linux 環境 S1:oracle 8.1.7 Server S2:是想連線到 S1 取資料的 Web 主機 我照大大設定方式,確實在S2主機上安裝起 OCI8模組,可是當要連至遠端時,卻出現如下訊息 Warning: ociplogon() [function.ociplogon]: ORA-12154: TNS:could not resolve the connect identifier specified in /conn.php 2 其內容是 不知還要設定什麼 謝"
Comment by joe (07/30/2008 21:53)

this is comment icon 回 joe [回覆]

這是程式沒寫好, 不然就是 Oracle 設定的問題囉~ :)
(先試試看用其他工具連線看看?)

Comment by Tsung (07/31/2008 12:42)

this is comment icon 連線問題 [回覆]

我想請教一下~
我跟joe一樣的問題
我在s2主機已裝好oci8了~
是不是在s2主機要裝oracle client
才能連至s1 的oracle啊?
^^"
謝謝~

Comment by 簡簡單單 (08/07/2008 15:42)

this is comment icon 回 簡簡單單 [回覆]

不用再裝 oracle client 了, 在上面已經將 php 的 oci (oracle client) 包在裡面了, 所以再連不上的話, 應該是 Oracle 設定問題, 不然就是程式 connect 那段沒寫好囉~ :)

Comment by Tsung (08/07/2008 15:53)

this is comment icon 連線問題 [回覆]

不好意思 我還有問題要請教您
有寄一封信到您的gmail~
不知您有沒有空看一下~
冒昧打擾 不好意思
如不方便 就沒關係
謝謝您!!

Comment by 簡簡單單 (08/08/2008 09:24)

this is comment icon 回 簡簡單單 [回覆]

已經回信囉~ 如果沒收到再跟我說一聲~ :)

Comment by Tsung (08/08/2008 09:44)
Add this page to del.icio.us Add this page to Yahoo Taiwan's bookmark Add this page to MyShare

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~