熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

安裝PHP和Oracle10g即時客戶端

2013-11-13 15:54:48  來源: Oracle 

  Oracle g Instant Client是PHP 與遠程 Oracle 數據庫連接的最簡單方式它只需要安裝三個庫

  PHP 訪問 Oracle 的當前 API 所使用的 Instant Client 庫稱作 OCI(此 C 接口的名稱最早是在 Oracle 中引入的)PHP Oracle 函數 可以直接調用 Oracle x 或 x或者也可以為了方便起見使用可選的抽象類如 PEAR MDB 和 ADOdb

  Instant Client 也可以使用老版本的 PHPoracle擴展但它調用不贊成使用的 Oracle APIPHP 界或 Oracle 建議不要使用此擴展進行新的開發

  要在 Apache 上將 Instant Client 與 PHP 或 連用請遵循以下步驟需要一個現有的 Oracle 數據庫Instant Client 不提供 Oracle 數據庫通常情況下此數據庫將位於其他計算機上如果數據庫位於本地則 Oracle 組件一般早已可用從而不需要 Instant Client


  軟件需求 軟件 附注 Oracle Instant Client 下載Instant Client Package Basic
在 Linux 上還應下載Instant Client Package SDK Apache HTTPD Server PHP 界仍推薦 Apache PHP — PHP 超文本處理器 版或更高版本
在 Windows 上啟用 PHP OCI 擴展

  Instant Client 二進制文件是 PHP 的 Windows 預構建二進制文件的補充


      下載 PHP 二進制壓縮文件(不是安裝程序版本)和 Apache按照 PHP 手冊中的 Windows 系統上的安裝安裝它們OTN 的開放源代碼開發人員中心包含有用背景資料的鏈接在 Windows /XP 上安裝 OraclePHP 和 Apache它介紹了如何安裝傳統完整的 Oracle g 版本(Instant Client 不需要此版本)

      繼續操作之前檢查 PHP 是否正常運行此階段未啟用 Oracle 支持


      從 OTN 的 Instant Client 頁面下載用於 Windows 的 Instant Client Basic 程序包此壓縮文件的大小大約為 MB


      創建一個子目錄(例如c:\instantclient_然後從壓縮文件中復制以下庫


    oraocieidll
    orannzsbbdll
    ocidll

      這三個文件的總大小大約為 MB

      要使用 PHP 老版本的oracle擴展(在 phpini 中使用extension=php_oracledll啟用)則復制 ociwdll 而非 ocidll


      編輯此環境將 c:\instantclient_ 添加到 PATH 中(位於其他 Oracle 目錄之前)

      例如在 Windows 依次單擊開始>設置>控制面板>系統>高級>環境變量編輯系統變量列表中的 PATH

      如果使用了 tnsnamesora 文件定義 Oracle Net 服務名稱則將 tnsnamesora 復制到 c:\instantclient_並將用戶環境變量 TNS_ADMIN 設置為 c:\instantclient_也可以在用戶環境變量 LOCAL 中定義默認的服務名稱

      設置必要的 Oracle 全球化語言環境變量如 NLS_LANG如果沒有設置則使用默認的本地環境有關更多詳細信息請參見 Oracle PHP 應用程序全球化概述

      無需設置不必要的 Oracle 變量如 ORACLE_HOME 和 ORACLE_SID


      編輯 phpini並不要將 OCI 擴展設為注釋

      extension=php_ocidll

      將 extension_dir 指令設置為完整的 PHP 擴展 DLL 路徑在 PHP DLL 位於 PHP 軟件的extensions子目錄中在 PHP 它們位於ext


      重新啟動 Apache


  要檢查是否配置了擴展請在 web 服務器可以讀取的地方創建一個簡單的 PHP 腳本

  <?php phpinfo(); ?>

  使用//URL 將此腳本加載到浏覽器中浏覽器頁面應包含一個顯示OCI Support enabledoci部分

在 Linux 上啟用 PHP OCI 擴展

  要在 Linux 上添加 Oracle 連接需要重新編譯 PHP

  開放源代碼開發人員中心包含有用背景資料的鏈接如在 Linux 上安裝 OraclePHP 和 Apache它介紹了如何安裝傳統完整的 Oracle g 版本(Instant Client 不需要此版本)


    下載並安裝 Apache例如在您的主目錄中安裝它

      cd apache_ /configure enablemodule=so prefix=$HOME/apache withport= make make install

      編輯 $HOME/apache/conf/並添加

      AddType application/x AddType application/xs


      下載並解壓縮 PHP


      從 OTN 上的 Instant Client 頁面下載 Basic 和 SDK Instant Client 程序包這兩個 RPM 的總大小大約為 MB


      以 root 用戶的身份安裝 RPM

      rpm Uvh oracleinstantclientbasicirpm rpm Uvh oracleinstantclientdevelirpm

      第一個 RPM 將 Oracle 庫置於 /usr/lib/oracle//client/lib 中第二個 RPM 在 /usr/include/oracle//client 中創建頭 (header)


    備份此補丁然後將它應用於 PHP 的 ext/oci/configm該補丁的行號是基於 PHP 如果已修復了 PHP 錯誤 (很有可能已在 PHP 中修復)則不需要此補丁

      如果使用的是 PHP 則可以將此補丁保存到一個文件中(如 php_ociic_buildpatch)然後使用以下命令安裝它

      patch u configm php_ociic_buildpatch

      此補丁創建一個新的 PHP 配置參數withociinstantclient[=DIR]在 Linux 上默認情況下它使用從 RPM 中安裝的最新版本的 Instant Client可以指定 Oracle 庫所在的目錄來使用其他版本無論在哪種情況下都將自動使用正確的 SDK 頭

      新參數與現有的 withoci 參數互斥

      例如在非 Linux 平台上將 Instant Client 程序包解壓縮到您所選擇的目錄中withociinstantclient 參數將需要明確指定此目錄例如withociinstantclient=/home/instantclient_應將 Instant Client SDK 解壓縮到與基本程序包相同的目錄中以便修改後的配置腳本可以找到頭文件的子目錄


    在頂層 PHP 目錄中重新構建configure腳本

      cd php rm rf automtecache configcache /buildconf force


      使用新選項運行 configure此示例使用安裝在主目錄中的 Apache

      /configure \ withociinstantclient \ prefix=$HOME/php withapxs=$HOME/apache/bin/apxs \ enablesigchild withconfigfilepath=$HOME/apache/conf


      重建 PHP

      make make install


      將 PHP 配置復制到 withconfigfilepath 指定的位置

      cp phpinirecommended $HOME/apache/conf/phpini


    將 LD_LIBRARY_PATH 設置為 /usr/lib/oracle//client/lib 並重新啟動 Apache

      如果使用了 tnsnamesora 文件定義 Oracle Net 服務名稱則將 TNS_ADMIN 設置為包含此文件的目錄

      啟動 Apache 之前應設置所有 Oracle 環境變量以下腳本可以幫助完成此操作

      #!/bin/sh APACHEHOME=/home/apache LD_LIBRARY_PATH=/usr/lib/oracle//client/lib:${LD_LIBRARY_PATH} TNS_ADMIN=/home export LD_LIBRARY_PATH TNS_ADMIN echo Starting Apache $APACHEHOME/apachectl start


  要確認是否配置了擴展請在 web 服務器可以讀取的地方創建一個簡單的 PHP 腳本

  <?php phpinfo(); ?>

  使用類似//localhost:/<path>/phpinfophp的 URL 將此腳本加載到浏覽器中浏覽器頁面應包含一個顯示OCI Support enabledoci部分

連接到 Oracle

  Oracle 連接信息被傳遞給 OCILogon() 來創建連接與 Instant Client 關聯的工具通常遠離任何數據庫服務器因此必須將 Oracle Net 連接標識符與用戶名和口令一起使用對於已建立的 Oracle 數據庫連接信息有可能是眾所周知的對於新系統此信息由 Oracle 安裝程序在安裝數據庫時提供此安裝程序應配置了 Oracle Net 和創建了一個服務名稱

  在新數據庫中可能需要將演示模式(如 HR 用戶)解除鎖定並向其提供口令也可通過在 SQL*Plus 中以 SYSTEM 用戶身份連接並執行以下語句來完成此操作

  ALTER USER 用戶名 IDENTIFIED BY 新口令 ACCOUNT UNLOCK;

  將連接信息傳遞給 PHP 有多種方法第一個示例使用 Oracle g的 Easy Connect 語法連接到 在 mymachine 上運行的 MYDB 數據庫服務中的 HR 模式不需要 tnsnamesora 或其他 Oracle Network 文件

  $c = OCILogon(hr hr_password //mymachinemydomain/MYDB);

  有關 Easy Connect 的語法請參見 Oracle 的使用 Easy Connect 命名方法文檔

  或者如果 /home/tnsnamesora 包含

  MYDB = (DESCRIPTION= (ADDRESS = (PROTOCOL = TCP)(HOST = mymachinemydomain)(PORT = )) (CONNECT_DATA= (SERVER = DEDICATED) (SERVICE_NAME = MYDB) ) )

  且 TNS_ADMIN 環境變量設置為 /home(在啟動 Apache 之前)則連接字符串可以為

  $c = OCILogon(hr hr_password MYDB);

  如果環境變量 LOCAL(在 Windows 上)或 TWO_TASK (在 Linux 上)設置為 MYDB則可以使用以下代碼生成與 MYDB 連接

  $c = OCILogon(hr hr_password);

使用 Oracle

  當基本連接可以使用時試著運行一個簡單的腳本 testociphp根據您的數據庫修改該連接的詳細信息並在浏覽器中加載它此示例列出了用戶 HR 擁有的所有表

  <?php $conn = OCILogon(hr hr_password //mymachinemydomain: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); ?>

故障診斷

  Oracle PHP 故障診斷常見問題解答包含有關連接 Oracle 的有用信息

  可以從 Instant Client 頁面下載 Oracle 的 SQL*Plus 命令行工具來幫助解決環境問題和連接問題另請參見 SQL*Plus Instant Client 版本說明

  檢查 SQL*Plus 使用的環境是否與 phpinfophp 顯示的環境相同

  Windows 幫助

  如果 phpinfophp 腳本沒有生成顯示OCI Support enabledoci部分則確認在 phpini 中沒有將extension=php_ocidll設為注釋

  如果 PATH 設置錯誤或找不到 Oracle 庫則啟動 Apache 將顯示警告在指定的路徑中找不到動態鏈接庫 OCIdllphpinfo() 頁面的 Environment 部分將顯示 PATH 的值以及 PHP 實際使用的 Oracle 變量

  如果 phpini 的 extension_dir 指令不正確則在啟動 Apache 將顯示警告PHP 啟動無法加載動態庫 php_ocidll

  Linux 幫助

  仔細檢查是否正確修復了 configm如果configure失敗則檢查 configlog 文件還原 configm刪除緩存文件運行 /buildconf force and configure驗證問題是否與所做的更改相關

  確保configure上的時間戳是當前的刪除所有緩存文件並在必要時重建它

  在啟動 Apache 的 shell 中設置所有必要的 Oracle 環境變量

結論

  希望本文對您能有所幫助您可以在 OTN Instant Client 或 PHP 論壇上發表問題和建議


From:http://tw.wingwit.com/Article/program/Oracle/201311/17507.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.