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

Win7 64位系統下 PHP 連接 Oracle 數據庫圖文教程

     編輯:PHP 綜合知識

Windows 開發環境連接 Oracle 是眾多 PHP 開發者的日常痛點:架構匹配(x64/x86)、環境變量配置、DLL 地獄、擴展啟動順序,環環相扣。本文針對 Win7 64 位系統,提供從 Instant Client 下載到 PHP 擴展啟用的全流程圖文指引,助你一次成功。

先決條件確認

  • OS:Windows 7 SP1 64-bit / Windows 10 64-bit
  • PHP:x64 版本(關鍵!x86 PHP 無法加載 x64 DLL)
  • Apache:x64 版本(與 PHP 架構一致)
  • Oracle Server:已知 IP、Port、SID/Service Name、賬號密碼

步驟一:下載並部署 Oracle Instant Client (x64)

  1. 訪問 Oracle 官網下載頁
  2. 下載 Basic Package + SDK Package(同版本),例如 instantclient-basic-windows.x64-11.2.0.4.0.zip、instantclient-sdk-windows.x64-11.2.0.4.0.zip
  3. 解壓至統一目錄,建議:D:\Program Files (x86)\Oracle64Client\instantclient_11_2
    注意:路徑無中文、無空格、無特殊字符
  4. 驗證關鍵文件存在:
    oci.dll、oraociei11.dll、oraons.dll、sdk/include/oci.h

步驟二:配置系統環境變量(核心關鍵)

  1. 右鍵「計算機」→ 屬性 → 高級系統設置 → 環境變量
  2. 系統變量區找到 Path → 編輯 → 在末尾添加:
    ;D:\Program Files (x86)\Oracle64Client\instantclient_11_2
  3. 新建系統變量(強烈建議):
    變量名:ORACLE_HOME
    變量值:D:\Program Files (x86)\Oracle64Client\instantclient_11_2
  4. 新建系統變量:
    變量名:TNS_ADMIN
    變量值:D:\Program Files (x86)\Oracle64Client\instantclient_11_2\network\admin
    若目錄不存在請手動創建,後續放置 tnsnames.ora
  5. 打開新的 CMD 驗證:
    echo %PATH% 包含上述路徑
    tnsping 命令可用(若報錯則 Path 未生效)
  6. 步驟三:啟用 PHP OCI8 擴展

    1. 打開 php.ini(確認是 Apache/PHP-FPM 實際加載的那個,參考 phpinfo())
    2. 搜索 extension=oci8,取消註釋或添加:
      extension=oci8_12c (PHP 7.x 對應 12c 客戶端)
      extension=oci8 (PHP 5.x 對應 11g 客戶端)
      具體 DLL 文件名請查看 ext/ 目錄實際文件
    3. 確認 extension_dir 指向正確:
      extension_dir = "D:/php/ext"
    4. 保存並重啟 Apache 服務
    5. 步驟四:驗證擴展加載

      瀏覽器訪問 phpinfo() 頁面,搜索 oci8,應看到:

      • OCI8 Support → enabled
      • Oracle Run-time Client Library Version → 11.2.0.4.0 (或對應版本)
      • Oracle Compile-time Version → 11.2.0.4.0

      phpinfo oci8 enabled

      步驟五:連接測試(含 tnsnames.ora 配置)

      方式一:Easy Connect 字符串(無需 tnsnames.ora)

      ";
      oci_close($conn);
      ?>

      方式二:TNS 別名(推薦生產環境)

      1. 在 %TNS_ADMIN% 目錄創建 tnsnames.ora:
        DEV_DB =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.23.131)(PORT = 1521))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = dev)
            )
          )
      2. PHP 連接:oci_connect('test', 'test', 'DEV_DB')

      常見坑點速查表

      進階:使用 PHPOffice/PHPWord 現代版本

      文中提到的舊版 PHPWord 維護已停止,強烈建議遷移至 PHPOffice/PHPWord:
      composer require phpoffice/phpword
      新版原生支持 UTF-8、命名空間、Composer 自動加載、更豐富的文檔操作 API,無需手動修改源碼解決中文亂碼。

      1. 上一篇文章:
      2. 下一篇文章:
      Copyright © 程式碼之家 All Rights Reserved
      現象原因解決
      PHP Warning: Unable to load dynamic library 'oci8'DLL 架構不匹配 / 依賴缺失確認 PHP/x64、Instant Client/x64、Apache/x64 三統一
      ORA-12705: Cannot access NLS data filesNLS_LANG 環境變量缺失新建系統變量 NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      ORA-12154: TNS:could not resolveTNS_ADMIN 路徑錯或 tnsnames.ora 格式錯用 tnsping 別名測試、檢查括號匹配、編碼為 ANSI
      Apache 崩潰 / PHP 進程退出oci.dll 依賴的 VC++ 運行庫缺失安裝 Visual C++ Redistributable 2010/2012/2013 (x64)
      oci_connect 返回 false 無錯誤信息錯誤模式未設置oci_connect 後立即 oci_error() 捕獲