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

CentOS 6.4 下 PHP 5.3 連接 Oracle 11g 完整安裝指南

     編輯:PHP 綜合知識

環境準備

  • 作業系統:CentOS 6.4 x86_64
  • PHP 版本:5.3
  • 目標數據庫:Oracle 11g R2
  • Web 服務器:Apache

若未安裝 PHP,可通過 yum 快速部署:

yum install php php-pdo
yum install php-devel php-pear php-fpm php-gd php-ldap php-mbstring php-xml php-xmlrpc php-zlib zlib-devel bc libaio glibc

第一步:安裝 Oracle Instant Client

Instant Client 是輕量級的 Oracle 客戶端,無需安裝完整的 500MB 客戶端即可連接數據庫。從 Oracle 官網下載對應版本的 Basic 和 Devel 兩個 RPM 包。

rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm

創建軟鏈接(關鍵步驟)

64 位系統需創建 32 位兼容鏈接,否則後續編譯會報錯:

ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client
ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client

配置環境變量

vi /etc/profile.d/oracle.sh
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

執行 source /etc/profile.d/oracle.sh 使其生效。

第二步:安裝 PDO_OCI 擴展

從 PECL 下載源碼並修改配置以支持 Oracle 11.2:

wget https://pecl.php.net/get/PDO_OCI-1.0.tgz
tar -xvf PDO_OCI-1.0.tgz
cd PDO_OCI-1.0

修改 config.m4 文件

  • 約第 10 行,添加 11.2 版本判斷:
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
  PDO_OCI_VERSION=11.2
  • 約第 101 行,添加庫鏈接配置:
11.2)
  PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
  ;; 

編譯安裝

phpize
./configure --with-pdo-oci=instantclient,/usr,11.2
make && sudo make install

安裝完成後會在 /usr/lib64/php/modules/pdo_oci.so 生成模塊文件。

啟用擴展並驗證

echo "extension=pdo_oci.so" > /etc/php.d/pdo_oci.ini
php -i | grep oci
# 輸出應包含:PDO drivers => oci, sqlite

第三步:安裝 OCI8 擴展

wget https://pecl.php.net/get/oci8-2.0.8.tgz
tar -xvf oci8-2.0.8.tgz
cd oci8-2.0.8
phpize
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
make && make install
echo "extension=oci8.so" > /etc/php.d/oci8.ini
php -i | grep oci8  # 驗證安裝成功

第四步:測試數據庫連接

在 Web 目錄創建 testoci.php:

<?php
$conn = oci_connect('username', 'password', '172.29.88.178/DBTEST');
$stid = oci_parse($conn, 'select table_name from user_tables');
oci_execute($stid);
echo "<table>\n";
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
    echo "<tr>\n";
    foreach ($row as $item) {
        echo " <td>".($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;")."</td>\n";
    }
    echo "</tr>\n";
}
echo "</table>\n";
?>

重啟 Apache 後訪問該頁面,若正常顯示表列表則配置成功。

常見問題排查

  • 編譯報錯找不到庫文件: 檢查 LD_LIBRARY_PATH 及軟鏈接是否正確。
  • 連接失敗 ORA-12541: 確認 Oracle 監聽器狀態、防火牆及 TNS 配置。
  • PHP 版本不匹配: 確保 PDO_OCI 和 OCI8 版本與 PHP 5.3 兼容。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved