Linux下配置PHP5连接Oracle 10.2.0
2009-02-27 14:23
603 查看
Linux下配置PHP5连接Oracle 10.2.0
By simon ~ 六月 16th, 2008. Filed under: PHP, oracle, 服务器应用.按惯例,必须先本地安装Oracle,至少是Oracle Client, 最好是全部服务器程序。安装Oracle 不在本文讨论范围。另外本文假设安装Oracle 10.2.0 全部服务器程序。
首先,编译安装PHP, 必须增加一条“–with-oci=/path/to/oracle”, 下面是我的PHP编译完整命令:
'./configure' '--prefix=/opt/php5' '--with-config-file-path=/opt/php5' '--with-bz2' '--with-exec-dir=/usr/bin/' '--with-curl' '--with-freetype-dir=/usr' '--with-png-dir=/usr' '--with-gd=shared' '--enable-gd-native-ttf' '--with-xml' '--with-jpeg-dir=/usr' '--with-openssl' '--with-zlib' '--with-pear=/usr/share/pear' '--with-mysql=shared,/usr' '--with-apxs2=/usr/sbin/apxs' '--with-oci8=/oracle/product/10.2.0'
其次,修改apache文件,识别oracle path。其中apache 识别php不再赘述。可以修改apache 的启动文件apachectl,找到下面文字
# |||||||||||||||||||| START CONFIGURATION SECTION |||||||||||||||||||| # -------------------- -------------------- # # the path to your httpd binary, including options if necessary HTTPD='/usr/sbin/httpd'
在下面添加
export ORACLE_BASE=/oracle export ORACLE_HOME=/oracle/product/10.2.0/ export PATH=$PATH:$ORACLE_HOME/BIN: export LD_LIBRARY_PATH=/oracle/product/10.2.0/lib:$LD_LIBRARY_PATH
重启apache
最后,测试。写一个php 测试脚本,我的脚本如下:
检查phpinfo页面, 应该会有下面的文字
oci8
OCI8 Support | enabled |
Version | 1.2.5 |
Revision | $Revision: 1.269.2.16.2.43 $ |
Active Persistent Connections | 0 |
Active Connections | 0 |
Oracle Version | 10.1 |
Compile-time ORACLE_HOME | /oracle/product/10.2.0 |
Libraries Used | no value |
Temporary Lob support | enabled |
Collections support | enabled |
//PHP连接Oracle函数 function php_conn_ora(){ $username='your username'; $passwd='your password'; $protocol='TCP'; $SERVICE_NAME='you service_name or SID'; $ORACLE_SERVER_IP_ADDRESS='your oracle ip'; $Port='1521'; PutEnv("NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8"); if(!$conn = oci_pconnect($username, $passwd, "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = $protocol)(HOST = $ORACLE_SERVER_IP_ADDRESS)(PORT = $Port)) ) (CONNECT_DATA = (SERVICE_NAME = $SERVICE_NAME) ) )")) echo("Error in Connecting to DataBase"); return $conn; } //Query 函数 function ora_query($sql){ global $conn_ora; $result=oci_parse($conn_ora,$sql); oci_execute($result,OCI_DEFAULT); return $result; } //Echo 环境变量 $ORACLE_HOME = getenv("ORACLE_HOME"); echo "ORACLE_HOME=$ORACLE_HOME /n"; $LD_LIBRARY_PATH = getenv("LD_LIBRARY_PATH"); echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH /n"; $PATH = getenv("PATH"); echo "PATH=$PATH /n"; //连接测试 $conn_ora=php_conn_ora(); $sql="select * from sometable where rownum<=2"; $result=ora_query($sql); oci_fetch_all($result,$array); echo "<pre>"; var_dump($array); echo "</pre>";
通过浏览器访问上面的脚本文件,如果一切正常,至少会有正常的环境变量结果输出,还有你的数据查询结果:
ORACLE_HOME=/oracle/product/10.2.0 NLS_LANG=AMERICAN_AMERICA.AL32UTF8 PATH=/usr/kerberos/sbin:/oracle/product/10.2.0/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/oracle/bin //下面省略数据查询结果
异常处理:
这种事情一般很难一蹴而就,经常会有这样那样的问题。下面是我碰到过的情况:
测试页面包含下面提示文字:
...OCIEnvNlsCreate() failed. There is something wrong with your system - please check that ORACLE_HOME is set and points to the right directory...
解决办法:
1.检查测试脚本的环境变量输出是否正常。如果为:
ORACLE_HOME= NLS_LANG= PATH=
表示执行apache服务的用户没有得到正确环境变量。建议的解决办法是,将上面写入apachectl文件的文字:
export ORACLE_BASE=/oracle export ORACLE_HOME=/oracle/product/10.2.0/ export PATH=$PATH:$ORACLE_HOME/BIN: export LD_LIBRARY_PATH=/oracle/product/10.2.0/lib:$LD_LIBRARY_PATH
写道/etc/init.d/httpd文件试试,可以写到下面文字之后
apachectl=/usr/sbin/apachectl httpd=${HTTPD-/usr/sbin/httpd} prog=httpd pidfile=${PIDFILE-/var/run/httpd.pid} lockfile=${LOCKFILE-/var/lock/subsys/httpd} RETVAL=0
2.如果上面的显示正常,请检查oracle安装目录是否能为执行apache服务的用户读取。如果没有,请执行
chmod a+r /path/to/oracle
本文为寻找人生的起点(http://blog.cn-ic.org)原创,如需转载,请注明出处,并保留原文链接 http://blog.cn-ic.org/?p=94。
相关文章推荐
- Linux下oracle连接客户端sqlplus的安装配置
- PL/SQL客户端连接虚拟机(linux)下的oracle服务器配置
- Nodejs连接oracle配置。Mac 或者 Linux
- 在linux下配置oracle远程连接数据库
- Linux Oracle10.2.0 RAC配置注意问题
- 配置vnc远程连接Linux和unix服务器图形界面安装Oracle
- PLSQL客户端连接虚拟机(linux)下Oracle配置
- PL/SQL客户端连接虚拟机(linux)下的oracle服务器配置
- 配置vnc远程连接Linux和Unix远程服务器图形界面安装oracle
- 配置开发支持高并发TCP连接的Linux应用程序全攻略
- 树莓派3B 无显示器,无键盘,无Linux系统,无网线 配置WIFI连接
- linux连接500k的配置
- 在Linux系统下远程连接oracle的防火墙设置
- 【Oracle RAC】Linux系统Oracle 11g R2 RAC 安装配置详细过程-视频培训教程
- oracle客户端安装与配置(包含windows和linux)
- 如何在Linux系统上安装和配置Backup Exec 12.5 Oracle Agent
- Git使用:Linux(Ubuntu 14.04 x64)下安装Git并配置连接GitHub
- 配置开发支持高并发TCP连接的Linux应用程序全攻略
- Linux下搭建Oracle11g RAC(4)----配置oracle,grid用户SSH对等性
- 在Linux 中为oracle配置hugepage的方法