Chinaunix首页 | 论坛 | 博客
  • 博客访问: 96436
  • 博文数量: 62
  • 博客积分: 125
  • 博客等级: 入伍新兵
  • 技术积分: 350
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-18 15:16
文章分类

全部博文(62)

文章存档

2012年(62)

我的朋友

分类:

2012-04-05 14:32:14

Oracle 10g、Apache 2.0、PHP 5的大整合  

2010-07-23 02:32:56|  分类: data-base |  标签: |字号 

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 进行大型数据库应用程序的开发。

more..

less..  

在 OTN 上已经有文档描述如何进行 10g / HTTPD 1.3/ PHP 4 的整合。所以这篇文档将描述如何整合 Oracle 10g、Apache (httpd 2)、PHP 5。便于快速的组建一个开发环境。如果您想对 PHP 的一些新功能(比如PDO)进行一下体验,那么本文可以作为一个开端。

Oracle、Apache、PHP三者之间的关系不妨借用一下这张示意图(原图地址):

 

本文假定您的 Oracle 10g (服务器或者客户端)已经安装完毕。如果没有安装,请参考这篇文档:

确定自己的 Oracle 处于可用状态。

本文所用的操作系统为 Core 3 Linux,Oracle 版本为10 R1 (10.1.0.2)。

下载所需文件:HTTPD 和 PHP 5

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

PHP 5 - (最新版本是 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):

Oracle PHP Test";

echo "Oracle PHP Test

";

echo "\n\\n";

echo "Name\nSalary\n\n";

for ($i = 0; $i \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为数据库连接串名字。

阅读(334) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~