SLSE10中PHP支持ORACLE10g简单一法
最新安装了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"
|
|