本文說明如何在 Linux (RHEL 3/4, SLES 9) 上安裝 Oracle Database 10g Express Edition (XE) 與 Zend Core for Oracle (ZCO),打造免費、輕量級的 PHP + Oracle 開發/部署環境。測試環境:512MB 記憶體、5GB 磁碟空間。
su -
cp Oracle-xe-10.2.0.1-1.0.i386.rpm /tmp
cd /tmp
rpm -ivh Oracle-xe-10.2.0.1-1.0.i386.rpm
/etc/init.d/oracle-xe configure
# 依提示設定 APEX 埠 (預設 8080)、Listener 埠 (1521)、SYS/SYSTEM 密碼、開機自啟
驗證:瀏覽器開啟 https://127.0.0.1:8080/apex,以 SYSTEM 登入。
Oracle 與 Zend 合作產品,整合 PHP 5、Oracle Instant Client (OCI8)、XML/Web Services 支援,提供快速開發部署平台。Zend 提供商業支援。
su -
cp ZendCoreForOracle-v1.3.1-Linux-x86.tar.gz /tmp
cd /tmp
tar -zxf ZendCoreForOracle-v1.3.1-Linux-x86.tar.gz
cd ZendCoreForOracle-v1.3.1-Linux-x86
./install
# 依圖形向導:接受授權、備份既有 php.ini、選擇安裝路徑、設定 GUI 密碼、
# 選擇 Apache 2.0.52 (模組模式)、虛擬主機 Main Server、重啟 Apache
https://127.0.0.1/ZendCore,登入 GUI。display_errors = On → Save → Restart Apache。httpd.conf 取消註解 UserDir public_html。~/public_html/hello.php:<?php echo "Hello world!"; ?>https://127.0.0.1/~<username>/hello.php 驗證。oci_connect():快取連線,同腳本重複呼叫回傳同一連線。oci_new_connect():獨立連線,支援並行交易。oci_pconnect():持久連線,跨請求重用,需配合 oci8.max_persistent、oci8.persistent_timeout、oci8.ping_interval 參數調整。//hostname:port/service_name (需 10g Client),XE 範例://localhost/XETNS_ADMIN 環境變數指向目錄。預設 OCI_COMMIT_ON_SUCCESS 自動提交;建議使用 OCI_DEFAULT 手動控制:oci_commit()/oci_rollback(),避免不必要的網路往返與 I/O。
$stid = oci_parse($c, "SELECT last_name FROM employees WHERE employee_id = :eidbv");
oci_bind_by_name($stid, ":EIDBV", $myeid);
oci_execute($stid);
oci_fetch_all($stid, $res);
使用匿名區塊 BEGIN proc(...); END; 呼叫;OCI_B_CURSOR 綁定 REF CURSOR 取回結果集。
oci_new_descriptor() 建立 LOB 描述符,save()/load()/read()/seek() 操作資料。
PHP 5.1.2 新增 oci_bind_array_by_name(),單次 oci_execute() 即可批次插入 PHP 陣列資料。
NLS_LANG (如 GERMAN_GERMANY.AL32UTF8) 或 oci_connect() 第 4 參數指定字元集。XMLELEMENT、DBMS_XMLGEN 直接從關聯資料產生 XML。Oracle XE + ZCO 為 PHP 開發者提供零成本、高整合度的 Oracle 開發堆疊,配合重構後的 OCI8 擴展,涵蓋連線池、綁定變數、LOB、集合、XML 等企業級特性,極大降低構建資料庫驅動 Web 應用的門檻。