基本介绍
在 OTN 上已经有文档描述如何进行
Oracle、Apache、PHP三者之间的关系不妨借用一下这张示意图(原图地址):
本文假定您的 Oracle
http://www.dbanotes.nethttp://oracle.chinaitlab.com/Install-Oracle10g-RHEL3.htm
确定自己的 Oracle 处于可用状态。
本文所拥的操作系统为 Fedora Core 3 Linux,Oracle 版本为10 R1 (
下载所需文件:HTTPD 和 PHP 5
HTTPD - httpd://httpd.apache.org (目前的版本是
PHP 5 - http://www.php.net (最新版本是
安装HTTPD
需要说明的是,现在 Apache 社区不推荐把 Apache 2.0 用在产品环境中.
[root@FC3 software]# tar -zxvf httpd-
[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
[root@FC3 httpd-2.0.52]# /usr/local/apache/bin/apachectl stop
安装说明:第三行指定 Apache 的架构独立的文件安装位置。同时指定将用模块的形式。
如果为了方便的话,可以创建两个脚本控制 Apache 的启动与关闭。
[root@FC3 ~]# vi /bin/
添加如下内容:
#!/bin/sh
ORACLE_HOME=/u01/app/oracle/product/
ORACLE_SID=TEST
export ORACLE_HOME ORACLE_SID
echo
/usr/local/apache/bin/apachectl
创建关闭 apache 的脚本:
[root@FC3 ~]# vi /bin/stopapache
添加如下内容:
#!/bin/sh
ORACLE_HOME=/u01/app/oracle/product/
ORACLE_SID=TEST
export ORACLE_HOME ORACLE_SID
echo
/usr/local/apache/bin/apachectl stop
修改文件权限:
[root@FC3 ~] chmod +x /bin/
安装 PHP 5
[root@FC3 software]# tar -xjf php-
[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-
添加如下内容:
LoadModule php5_module modules/libphp5.so
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
</IfModule>
重新启动 apache:
[root@FC3 ]# /bin/stopapache
[root@FC3 ]# /bin/
测试 PHP 模块
测试 PHP 模块是否已经可用。当然是标准办法,写一个包含如下内容的PHP页面 info.php:
<?php phpinfo(); ?>
从浏览器中查看该页面输出内容。
注意,该页面中的内容 Configure Command 那一行中的内容是否包括如下内容:
'--with-apxs2=/usr/local/apache/bin/apxs'
'--with-oci8=/u01/app/oracle/product/
注意:在测试之后,出于安全的考虑,请把该文件删除
测试 PHP 的 oci
写一个简单的页面测试 oci 是否可用 (Just a copy sample from OTN):
<?php
$db_conn = ocilogon( "scott", "tiger","TEST" );
$cmdstr = "select ename, sal from emp";
$parsed = ociparse($db_conn, $cmdstr);
ociexecute($parsed);
$nrows = ocifetchstatement($parsed, $results);
echo "<html><head><title>Oracle PHP Test</title></head><body>";
echo "<center><h2>Oracle PHP Test</h2><br>";
echo "<table border=1 cellspacing='0' width='50%'>\n\<tr>\n";
echo "<td><b>Name</b></td>\n<td><b>Salary</b></td>\n</tr>\n";
for ($i = 0; $i < $nrows; $i++ )
{
echo "<tr>\n";
echo "<td>" . $results["ENAME"][$i] . "</td>";
echo "<td>$ " . number_format($results["SAL"][$i], 2). "</td>";
echo "</tr>\n";
}
echo "<tr><td colspan='2'> Number of Rows: $nrows</td></tr></table>";
echo "<br><em>If you see data, then it works!</em><br></center></body></html>\n";
?>
说明:上例中,scott/tiger分别为数据库的用户名字和密码,TEST为数据库连接串名字。