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

Ubuntu 14.04 搭建 PHP 5 + Apache 2 + Oracle 即時客戶端環境完整教學

     編輯:Oracle 教學

Ubuntu 14.04 搭建 PHP 5 + Apache 2 + Oracle 即時客戶端環境完整教學

Oracle 官方不支援 Ubuntu,需手動安裝 Instant Client Basic + SDK、建立軟連結、編譯 OCI8 擴展。本文記錄從相依套件安裝到 PHP 整合的完整步驟,並針對常見編譯錯誤(找不到 SDK、庫版本號、路徑錯誤)給出解決方案。

一、環境資訊

  • OS:Ubuntu 14.04 (3.13.0-46-generic x86_64)
  • PHP:5.5.9-1ubuntu4.6
  • Apache:2.4.7
  • 目標:連線遠端 Oracle 12c 資料庫

二、安裝相依套件

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install php5-dev build-essential php-pear libaio1 unzip make

三、下載並部署 Oracle Instant Client

  1. 前往 Oracle 官網下載頁:Instant Client Downloads
  2. 下載兩個 ZIP(以 12.1 為例):
    • instantclient-basic-linux.x64-12.1.0.2.0.zip
    • instantclient-sdk-linux.x64-12.1.0.2.0.zip
  3. 解壓並調整目錄結構(**關鍵步驟**):
    unzip instantclient-basic-linux.x64-12.1.0.2.0.zip
    unzip instantclient-sdk-linux.x64-12.1.0.2.0.zip
    # 重命名移除版本號
    mv instantclient_12_1 instantclient
    mv instantclient_12_1/sdk instantclient/sdk   # 將 sdk 移入 instantclient 目錄
  4. 在 instantclient/ 目錄建立無版本號軟連結(**必須用 ln -s,不可用圖介面**):
    cd instantclient
    ln -s libclntsh.so.12.1 libclntsh.so
    ln -s libocci.so.12.1 libocci.so
    ln -s libnnz12.so libnnz.so
  5. 移動至系統庫目錄並授權:
    sudo mv instantclient /usr/local/lib/
    sudo chmod 777 -R /usr/local/lib/instantclient/
  6. 設定環境變數(/etc/environment):
    LD_LIBRARY_PATH="/usr/local/lib/instantclient"
    TNS_ADMIN="/usr/local/lib/instantclient"
    ORACLE_BASE="/usr/local/lib/instantclient"
    ORACLE_HOME=$ORACLE_BASE
    生效:重新登入或 source /etc/environment。

四、編譯安裝 OCI8 擴展

sudo pecl install oci8

提示輸入路徑時鍵入:

instantclient,/usr/local/lib/instantclient

成功訊息:

Build process completed successfully
Installing '/usr/lib/php5/20121212/oci8.so'
You should add "extension=oci8.so" to php.ini

五、啟用 PHP 擴展

sudo vim /etc/php5/apache2/conf.d/oci8.ini
# 內容:
extension=oci8.so

sudo /etc/init.d/apache2 restart

六、驗證安裝

建立 /var/www/html/test.php:

<?php phpinfo(); ?>

瀏覽器開啟 https://localhost/test.php,搜尋 OCI8 區塊應顯示:

OCI8 Support: enabled
OCI8 Version: 2.0.8
Oracle Run-time Client Library Version: 12.1.0.2.0
Oracle Compile-time Instant Client Version: 12.1

七、常見編譯錯誤與解決

錯誤訊息原因解決
configure: WARNING: You will need re2c 0.13.4+缺少 re2csudo apt-get install re2c(非阻斷)
Oracle Instant Client libraries libnnz.so and libclntsh.so not found軟連結未建立或建立位置錯誤確認在 instantclient/ 目錄下用 ln -s 建立三個 .so 連結
Oracle Instant Client SDK header files not foundsdk 目錄未放入 instantclient/執行 mv sdk instantclient/ 使 sdk 與 .so 同層
--with-oci8=instantclient,/path failedpecl 提示路徑錯誤輸入 instantclient,/usr/local/lib/instantclient(逗號分隔)

八、部署建議

  • 生產環境建議使用 Docker 映像固化環境,避免手動部署差異。
  • 若連線遠端 Oracle 需 TNS,將 tnsnames.ora 放入 $TNS_ADMIN(即 /usr/local/lib/instantclient)。
  • PHP 7+ 需安裝 pecl install oci8-2.2.0 對應版本。

完成上述步驟,Ubuntu 即可透過 PHP OCI8 穩定連線 Oracle 資料庫。

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