PHP+Oracle整合

| |
[不指定 2004/12/15 23:53 | by ipaddr ]
安装了Oracle后,才可以与PHP整合
a.设置好ORACLE_HOME环境变量(Oracle的安装目录)
b.Apache以DSO方式安装 ./configure --enable-module=so
c.重装编译安装PHP,并加上--with-oci8=$ORACLE_HOME
d.注意,还要设置LD_LIBRARY_PATH环境变量 引用:

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
export LD_LIBRARY_PATH  

另外,如果运行时如果要用到这个变量,可以加入到/etc/ld.so.conf中。比如,在/etc/ld.so.conf中加入
/opt/oracle/product/9.2.0/lib
e.改Apache的启动脚本
Apache启动的时候,要有环境变量ORACLE_HOME,如果是RHEL3自带的Apache,则需要在/etc/init.d/httpd里,加入如下两句:
引用:
在/etc/init.d/httpd的31行后,加入:
#在这句之后
# RETVAL=0
ORACLE_HOME=/opt/oracle/product/9.2
ORACLE_SID=koook
#ORACLE_SID可以不用设置,但登录是要指定SID
export ORACLE_HOME ORACLE_SID  

另外,如果是自安装的Apache,用apachectl启动的话,可以写一个脚本,如下:
引用:(oracle-apache-ctl)
#!/bin/sh
ORACLE_HOME=/opt/oracle/product/9.2
ORACLE_SID=koook
export ORACLE_HOME ORACLE_SID
echo "Oracle Home: $ORACLE_HOME"
echo "Oracle SID: $ORACLE_SID"
echo Starting Apache
./apachectl start  

(另外,可能还需加入NLS_LANG环境变量,防止乱码)





以下是测试:


$db_conn = ocilogon( "system", "syspassword","koookdb");

//koookdb在Netca里设置,或修改tnsnames.ora文件

$cmdstr = "select ename, sal from scott.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";


?>


Program | 评论(0) | 引用(23) | 阅读(5600)