程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 整合Oracle 10g、Apache 2.0、PHP 5

整合Oracle 10g、Apache 2.0、PHP 5

編輯:Oracle數據庫基礎
基本介紹

  2004年7月13日,PHP 官方站點正式發布了 PHP 5。Oracle 在 2004 年 8 月宣布將在拳頭產品 Application Server 中提供對 PHP 的支持。先是在 Oracle Application Server 10g (9.0.4) 提供 mod_php 模塊,繼而在Oracle Application Server 10g Release 2 (10.1.2) 中提供了 PHP 4.3的版本,接著Oracle JDeveloper 10g 也將提供對 PHP 擴展能力。相信,不久 Oracle 將正式支持 PHP 5。而隨著 Oracle 技術社區的大力推廣,也將有更多的開發人員利用 PHP 進行大型數據庫引用的開發。

  在 OTN 上已經有文檔描述如何進行 10g / HTTPD 1.3/ PHP 4 的整合。所以這篇文檔將描述如何整合 Oracle 10g、apache (httpd 2)、PHP 5。便於快速的組建一個開發環境。如果您想對 PHP 的一些新功能(比如PDO)進行一下體驗,那麼本文可以作為一個開端。

  Oracle、apache、PHP三者之間的關系不妨借用一下這張示意圖(原圖地址):

  Oracle apache PHP relation

  本文假定您的 Oracle 10g (服務器或者客戶端)已經安裝完畢。如果沒有安裝,請參考這篇文檔:

  www.dbanotes.Net/Oracle/Install-Oracle10g-RHEL3.htm

  確定自己的 Oracle 處於可用狀態。

  本文所擁的操作系統為 Fedora Core 3 Linux,Oracle 版本為10 R1 (10.1.0.2)。

  下載栉募篐TTPD 和 PHP 5

  HTTPD - httpd://httpd.apache.org (目前的版本是 2.0.52)

  PHP 5 - www.PHP.Net (最新版本是 5.0.2)

  安裝HTTPD

  需要說明的是,現在 Apache 社區不推薦把 apache 2.0 用在產品環境中.

  [root@FC3 software]# tar -zxvf httpd-2.0.52.tar.gz

  [root@FC3 software]# cd httpd-2.0.52

  [root@FC3 httpd-2.0.52]# ./configure --prefix=/usr/local/apache \ --enable-module=so

  [root@FC3 httpd-2.0.52]# make clean

  [root@FC3 httpd-2.0.52]# make

  [root@FC3 httpd-2.0.52]# make install

  [root@FC3 httpd-2.0.52]# /usr/local/apache/bin/apachectl start

  [root@FC3 httpd-2.0.52]# /usr/local/apache/bin/apachectl stop

  安裝說明:第三行指定 apache 的架構獨立的文件安裝位置。同時指定將用模塊的形式。

  如果為了方便的話,可以創建兩個腳本控制 apache 的啟動與關閉。

  [root@FC3 ~]# vi /bin/startapache

  添加如下內容:

  #!/bin/sh

  ORACLE_HOME=/u01/app/Oracle/product/10.1.0/db_1

  Oracle_SID=TEST

  export ORACLE_HOME Oracle_SID

  echo Starting apache

  /usr/local/apache/bin/apachectl start

  創建關閉 apache 的腳本:

  [root@FC3 ~]# vi /bin/stopapache

  添加如下內容:

  #!/bin/sh

  ORACLE_HOME=/u01/app/Oracle/product/10.1.0/db_1

  Oracle_SID=TEST

  export ORACLE_HOME Oracle_SID

  echo Starting apache

  /usr/local/apache/bin/apachectl stop

  修改文件權限:

  [root@FC3 ~] chmod +x /bin/startapache /bin/stopapache

  安裝 PHP 5

  [root@FC3 software]# tar -xjf PHP-5.0.2.tar.bz2

  [root@FC3 software]# cd PHP-5.0.2

  [root@FC3 PHP-5.0.2]# export ORACLE_BASE=/u01/app/Oracle

  [root@FC3 PHP-5.0.2]# export ORACLE_HOME=$Oracle_BASE/product/10.1.0/db_1

  [root@FC3 PHP-5.0.2]# export Oracle_SID=TEST

  [root@FC3 PHP-5.0.2]# export PATH=$PATH:$HOME/bin:$Oracle_HOME/bin

  [root@FC3 PHP-5.0.2]# export LD_LIBRARY_PATH=$Oracle_HOME/lib:/usr/lib

  [root@FC3 PHP-5.0.2]# ./configure --with-apxs2=/usr/local/apache/bin/apxs \

  --with-oci8=$Oracle_HOME

  [root@FC3 PHP-5.0.2]# make clean

  [root@FC3 PHP-5.0.2]# make

  [root@FC3 PHP-5.0.2]# make install

  [root@FC3 php-5.0.2]# cp php.ini-dist /usr/local/lib/PHP.ini

  安裝說明:第三到七行其實有些羅嗦了,其目的是控制 root 用戶的環境變量,其實也可以直接在 root 用戶的.bash_profile文件中制定環境變量。當然了,也可以用 oracle 用戶來進行 configure 與 make 。第八行中的 --with-oci8=$Oracle_HOME 激活 oci8 支持。

  接下來需要修改httpd.conf 文件的內容:

  [root@FC3 PHP-5.0.2]# vi /usr/local/apache/conf/httpd.conf

  添加如下內容:

  LoadModule php5_module modules/libPHP5.so

  

  AddType application/x-httpd-php .PHP

  

  重新啟動 apache:

  [root@FC3 ]# /bin/stopapache

  [root@FC3 ]# /bin/startapache

  測試 PHP 模塊

  測試 PHP 模塊是否已經可用。當然是標准辦法,寫一個包含如下內容的PHP頁面 info.PHP:

  

  從浏覽器中查看該頁面輸出內容。

  注意,該頁面中的內容 Configure Command 那一行中的內容是否包括如下內容:

  '--with-apxs2=/usr/local/apache/bin/apxs'

  '--with-oci8=/u01/app/Oracle/product/10.1.0/db_1'

  注意:在測試之後,出於安全的考慮,請把該文件刪除

  測試 PHP 的 oci

  寫一個簡單的頁面測試 oci 是否可用 (Just a copy sample from OTN):

  

  $db_conn = ocilogon( "scott", "tiger","TEST" );

  $cmdstr = "select ename, sal from emp";

  $parsed = ociparse($db_conn, $cmdstr);

  ocIExecute($parsed);

  $nrows = ocifetchstatement($parsed, $results);

  echo "";

  echo "

Oracle PHP Test

";

  echo "\n\\n";echo "Name\n Salary\n\n";

  for ($i = 0; $i < $nrows; $i++ )

  {

  echo "\n";

  echo "" . $results["ENAME"][$i] . "";

  echo "$ " . number_format($results["SAL"][$i], 2)."";

  echo "\n";

  }

  echo " Number of Rows: $nrows";

  echo "If you see data, then it works!

\n";

  ?>

  說明:上例中,scott/tiger分別為數據庫的用戶名字和密碼,TEST為數據庫連接串名字。

  參考文檔

  Installing Oracle, PHP, and apache on Linux by Robert Clevenger

  PHP:apache 2.0 on Unix systems - www.PHP.Net/manual/en/install.unix.apache2.PHP

  更多信息

  Oracle Open Source Developer Center - www.Oracle.com/technology/tech/opensource/index.Html

  本文作者

  Fenng,某美資公司DBA,業余時間混跡於各數據庫相關的技術論壇且樂此不疲。目前關注如何利用Oracle數據庫有效地構建企業應用。對Oracle tuning、troubleshooting有一點研究。

  個人技術站點:www.dbanotes.Net/ 。可以通過電子郵件 [email protected] 聯系到他。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved