Oracle 10g Instant Client(免費下載)是 PHP 連接遠端 Oracle 資料庫的最輕量方式,僅需三個核心庫檔案。PHP 使用的 OCI8 擴展基於此 C 介面,支援 Oracle 8.1.7 至 10.x 版本。建議使用 PEAR MDB2 或 ADOdb 等抽象層簡化開發。舊版 oracle 擴展已棄用,不建議新專案使用。
c:\instantclient10_1),複製三個核心 DLL:
oraociei10.dllorannzsbb10.dlloci.dll(若用舊 oracle 擴展則用 ociw32.dll)tnsnames.ora,將其放入 Instant Client 目錄,設定使用者環境變數 TNS_ADMIN 指向該目錄。NLS_LANG),勿設定 ORACLE_HOME、ORACLE_SID 等多餘變數。extension=php_oci8.dll,設定正確的 extension_dir(PHP4 為 extensions/,PHP5 為 ext/)。建立 phpinfo.php:
<?php phpinfo(); ?>
瀏覽器訪問,應見 oci8 區塊顯示 "OCI8 Support enabled"。
Linux 需重新編譯 PHP 以啟用 OCI8。
$HOME/apache,port 8888)./configure --enable-module=so --prefix=$HOME/apache --with-port=8888
make && make install
編輯 httpd.conf 加入 PHP 型別對應。
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。
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 互斥。
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
$HOME/apache/conf/php.ini。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
訪問 https://localhost:8888/phpinfo.php 確認 oci8 區塊。
$c = OCILogon('hr', 'hr_password', '//myMachine.mydomain/MYDB');
$c = OCILogon('hr', 'hr_password', 'MYDB');
$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);
?>
php.ini 是否啟用擴展extension_dir 路徑錯誤config.m4 修補錯誤 → 檢查 config.log,還原重試rm -rf autom4te.cache config.cacheInstant Client 讓 PHP 連接 Oracle 輕量化、部署簡單。詳細問題可至 OTN Instant Client 或 PHP 論壇尋求支援。