首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Linux 與 Windows 下 PHP 連接 Oracle 完整安裝配置指南

     編輯:Oracle 資料庫基礎

核心方案:Oracle Instant Client

Oracle 10g Instant Client(免費下載)是 PHP 連接遠端 Oracle 資料庫的最輕量方式,僅需三個核心庫檔案。PHP 使用的 OCI8 擴展基於此 C 介面,支援 Oracle 8.1.7 至 10.x 版本。建議使用 PEAR MDB2 或 ADOdb 等抽象層簡化開發。舊版 oracle 擴展已棄用,不建議新專案使用。

Windows 平台配置步驟

軟體需求

  • Apache HTTPD Server(建議 1.3 版)
  • PHP 4.3+(Windows 預編譯二進制檔,非安裝程式版)
  • Oracle Instant Client Basic Package(約 30MB)

詳細步驟

  1. 安裝 Apache 與 PHP,依官方手冊配置,確認 PHP 正常運作(此階段未啟用 Oracle)。
  2. 下載並解壓 Instant Client Basic 至目錄(如 c:\instantclient10_1),複製三個核心 DLL:
    • oraociei10.dll
    • orannzsbb10.dll
    • oci.dll(若用舊 oracle 擴展則用 ociw32.dll)
    總計約 80MB。
  3. 設定環境變數 PATH,將上述目錄加入系統 PATH 最前端(控制台 → 系統 → 進階 → 環境變數)。
  4. 配置 TNS_ADMIN(可選):若使用 tnsnames.ora,將其放入 Instant Client 目錄,設定使用者環境變數 TNS_ADMIN 指向該目錄。
  5. 設定全球化環境變數(如 NLS_LANG),勿設定 ORACLE_HOME、ORACLE_SID 等多餘變數。
  6. 修改 php.ini:啟用 extension=php_oci8.dll,設定正確的 extension_dir(PHP4 為 extensions/,PHP5 為 ext/)。
  7. 重啟 Apache。

驗證安裝

建立 phpinfo.php:

<?php phpinfo(); ?>

瀏覽器訪問,應見 oci8 區塊顯示 "OCI8 Support enabled"。

Linux 平台配置步驟

Linux 需重新編譯 PHP 以啟用 OCI8。

軟體準備

  • Apache(如安裝於 $HOME/apache,port 8888)
  • PHP 原始碼套件
  • Instant Client Basic + SDK RPM(共約 30MB)

編譯安裝流程

  1. 安裝 Apache:
    ./configure --enable-module=so --prefix=$HOME/apache --with-port=8888
    make && make install
    編輯 httpd.conf 加入 PHP 型別對應。
  2. 安裝 Instant Client RPM(需 root):
    rpm -Uvh oracle-instantclient-basic-10.1.0.3-1.i386.rpm
    rpm -Uvh oracle-instantclient-devel-10.1.0.3-1.i386.rpm
    庫裝於 /usr/lib/oracle/10.1.0.3/client/lib,頭檔於 /usr/include/oracle/10.1.0.3/client。
  3. 修補 PHP ext/oci8/config.m4(PHP 4.3.9/4.3.10 需要,較新版已修復):
    patch -u config.m4 PHP_oci8ic_buildpatch
    新增 --with-oci8-instant-client[=DIR] 參數,與 --with-oci8 互斥。
  4. 重建 configure 並編譯 PHP:
    cd php-4.3.9
    rm -rf autom4te.cache config.cache
    ./buildconf --force
    ./configure --with-oci8-instant-client \
        --prefix=$HOME/php \
        --with-apxs=$HOME/apache/bin/apxs \
        --enable-sigchild --with-config-file-path=$HOME/apache/conf
    make && make install
  5. 複製 php.ini 至 $HOME/apache/conf/php.ini。
  6. 設定執行環境並啟動 Apache:
    export LD_LIBRARY_PATH=/usr/lib/oracle/10.1.0.3/client/lib:$LD_LIBRARY_PATH
    export TNS_ADMIN=/home  # 若使用 tnsnames.ora
    $HOME/apache/bin/apachectl start

驗證方式同 Windows

訪問 https://localhost:8888/phpinfo.php 確認 oci8 區塊。

連接 Oracle 資料庫

三種連接字串方式

  1. Easy Connect(無需 tnsnames.ora):
    $c = OCILogon('hr', 'hr_password', '//myMachine.mydomain/MYDB');
  2. 使用 tnsnames.ora + TNS_ADMIN:
    $c = OCILogon('hr', 'hr_password', 'MYDB');
  3. 環境變數 LOCAL (Win) / TWO_TASK (Linux):
    $c = OCILogon('hr', 'hr_password');

測試查詢腳本

<?php
$conn = OCILogon("hr", "hr_password", '//myMachine.mydomain:port/MYDB');
$query = 'SELECT table_name FROM user_tables';
$stid = OCIParse($conn, $query);
OCIExecute($stid, OCI_DEFAULT);
while ($succ = OCIFetchInto($stid, $row)) {
    foreach ($row as $item) echo $item . " ";
    echo "<br>\n";
}
OCILogoff($conn);
?>

常見故障排除

Windows

  • 無 oci8 區塊 → 檢查 php.ini 是否啟用擴展
  • 啟動報 "OCI.dll not found" → PATH 設定錯誤
  • "Unable to load php_oci8.dll" → extension_dir 路徑錯誤

Linux

  • config.m4 修補錯誤 → 檢查 config.log,還原重試
  • 時間戳問題 → 刪除快取檔 rm -rf autom4te.cache config.cache
  • 環境變數未生效 → 確保啟動 Apache 的 shell 已 export 所有 Oracle 變數

結語

Instant Client 讓 PHP 連接 Oracle 輕量化、部署簡單。詳細問題可至 OTN Instant Client 或 PHP 論壇尋求支援。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved