首页 | 程式人生 | 原创下载 | 技术文档 | 留言我们 | 关于我们

SLSE10中PHP支持ORACLE10g简单一法

作者: phanrider        2007-02-14

最新安装了SLSE10,并且安装了ORACLE10g,在安装好ORACLE10g后,想让PHP直接支持它,又不想重新编译整个源码包,再说如果参数配置不好,又会丢失好多已有的功能。仔细看了一相关设置,原来是支持模块方式调用的。如果我们生成好oci8.so,一些就会OK,let's go...
先自行安装好LAMP系统,这个只需要在GUI环境下查找相应安装包即可。
检查是否存在apache2-devel-2.2.0-21.2包和autoconf-2.59-92.2包,默认安装的SLSE10是没有这些的


phanrider@linux-suse:~> rpm -qa | grep apache2-devel
apache2-devel-2.2.0-21.2
phanrider@linux-suse:~> rpm -qa | grep autoconf
autoconf-2.59-92.2



设置一些oracle相关环境变量


phanrider@linux-suse:~/Desktop/php-5.1.2> export LD_LIBRARY_PATH=/opt/oracle/product/10.2/db_1/lib:/opt/oracle/product/10.2/db_1/ctx/lib
phanrider@linux-suse:~/Desktop/php-5.1.2> export ORACLE_BASE=/opt/oracle
phanrider@linux-suse:~/Desktop/php-5.1.2> export ORACLE_HOME=/opt/oracle/product/10.2/db_1
phanrider@linux-suse:~/Desktop/php-5.1.2> export ORACLE_SID=orcl
phanrider@linux-suse:~/Desktop/php-5.1.2> export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin



下载与SUSE发行版中对应的源码包,在SLSE 10中是php5-5.1.2版本,所以在官方网站下的应当是php-5.1.2.tar.gz文件。无须编译整个源码包,我们只须要得到oci8.so就可以了


phanrider@linux-suse:~/Desktop/php-5.1.2> cd ext/oci8/
phanrider@linux-suse:~/Desktop/php-5.1.2/ext/oci8> phpize
phanrider@linux-suse:~/Desktop/php-5.1.2/ext/oci8> aclocal
phanrider@linux-suse:~/Desktop/php-5.1.2/ext/oci8> ./configure
phanrider@linux-suse:~/Desktop/php-5.1.2/ext/oci8> make
phanrider@linux-suse:~/Desktop/php-5.1.2/ext/oci8> ls modules/
oci8.so



至此,我们可以make install,也可以手工到以下地方/etc/php5/conf.d/添加oci8.ini


phanrider@linux-suse:/etc/php5/conf.d> cat oci8.ini
; comment out next line to disable pdo extension in php
extension=oci8.so



把oci8.so文件拷贝到/usr/lib/php5/extensions/目录下


phanrider@linux-suse:~/Desktop/php-5.1.2/ext/oci8> cp modules/oci8.so /usr/lib/php5/extensions/



编辑一下/etc/init.d/apache2文件,添加$ORACLE_HOME,$ORACLE_SID(这个环境变量不是必须的)


phanrider@linux-suse:/etc/init.d> cat apache2 | grep ORACLE
ORACLE_HOME=/opt/oracle/product/10.2/db_1
ORACLE_SID=orcl
export ORACLE_HOME
export ORACLE_SID



重启一下apache服务


linux-suse:~ # /etc/init.d/apache2 restart



至此,应当可以在phpinfo中看到oci8支持了,对于PHP从数据库中读出来是乱码的解决方法


SQL> select value from v$nls_parameters where parameter='NLS_CHARACTERSET';

VALUE
----------------------------------------------------------------
ZHS16GBK




在/etc/init.d/apache2文件,添加$NLS_LANG


phanrider@linux-suse:/etc/init.d> cat apache2 | grep NLS
NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"



→返回←

红蜻蜓工作室版权所有
Copyright © 1999-2025 Reddragonfly & Studio All Rights Reserved.
如有任何问题及建议请留言红蜻蜓工作室