CentOS下安装PHP Oracle数据库扩展
本机在CentOS系统下已有环境为PHP5.6,Apache2.4,因为PHP项目需要连接远程Oracle数据库,所以要打开PHP支持Oracle的扩展pdo_oci和oci8。安装pdo_oci扩展和oci8扩展之前必须先安装Oracle客户端。关于Windows下PHP支持Oracle的操作在雷雪松的博客前面已经讲到,不清楚的可以查阅下。现在雷雪松详细的讲解下CentOS下Oracle扩展pdo_oci和oci8的安装。
一、安装Oracle客户端
1、到Oracle官网下载Oracle客户端rpm包oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm和oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm(下载文件需要注册),下载地址http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html。
2、使用RPM安装Oracle客户端
[cc lang=”bash” escaped=”true”][root@WebAppServer apache]# rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
[root@WebAppServer apache]# rpm -ivh oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm[/cc]
3、修改/etc/ld.so.conf,写入安装oracle客户端的lib路径:
[cc lang=”bash” escaped=”true”][root@WebAppServer apache]# vi /etc/ld.so.conf
/usr/lib/oracle/11.2/client64/lib/[/cc]
4、64位系统需要创建32位的软链接(这里可能是一个遗留bug,不然后面编译会出问题)
[cc lang=”bash” escaped=”true”][root@WebAppServer apache]# ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
[root@WebAppServer apache]# ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client[/cc]
5、定义环境变量
[cc lang=”bash” escaped=”true”][root@WebAppServer apache]# vi /etc/profile
#加入以下几行
export ORACLE_HOME=/usr/lib/oracle/11.2/client64/
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64:$LD_LIBRARY_PATH
export NLS_LANG=”SIMPLIFIED CHINESE_CHINA.ZHS16GBK”[/cc]
6、执行soucere命令使环境配置立即生效
[cc lang=”bash” escaped=”true”][root@WebAppServer apache]# source /etc/profile[/cc]
二.安装PHP pdo_oci扩展
PHP扩展通常可以使用PECL来安装PHP扩展,也可以直接下载PHP扩展源码使用phpize编译安装PHP扩展。本文以PHP源码ext文件夹使用phpize安装oci和pdo_oic扩展。防止pdo_oci对oracle11支持不足(pdo_oci可能不支持oracle11g,需要做个软链接成作为oracle10版本才能编译过去):
[cc lang=”bash” escaped=”true”][root@WebAppServer apache]# ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1
[root@WebAppServer apache]# ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1[/cc]
1.使用phpize安装扩展(phpize和php-config一般在PHP安装目录bin下面,这个需要根据自己的实际安装情况而定),进入到php/ext/pdo_oci对应的扩展文件夹
[cc lang=”bash” escaped=”true”][root@WebAppServer bin]# phpize
[root@WebAppServer bin]# ./configure –with-php-config=php-config –with-pdo-oci=instantclient,/usr,10.2.0.1
[root@WebAppServer bin]# make && make install[/cc]
2.修改PHP配置,有两种方法,一是直接在php.ini中打开扩展,二是在php.d文件夹中添加对应的ini文件及内容
[cc lang=”bash” escaped=”true”][root@WebAppServer bin]# vi /etc/php.ini
extension=pdo_oci.so //在php.ini中加入此行[/cc]
或者直接在命令行输入
[cc lang=”bash” escaped=”true”][root@WebAppServer bin]# echo ‘extension=pdo_oci.so’ > /etc/php.d/pdo_oci.ini[/cc]
三.安装PHP oci8扩展
1.使用phpize安装扩展(phpize和php-config一般在PHP安装目录bin下面,这个需要根据自己的实际安装情况而定),进入到php/ext/oci8对应的扩展文件夹
[cc lang=”bash” escaped=”true”][root@WebAppServer bin]# phpize
[root@WebAppServer bin]# ./configure –with-php-config=php-config –with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib
[root@WebAppServer bin]# make && make install[/cc]
2.修改PHP配置,有两种方法,一是直接在php.ini中打开扩展,二是在php.d文件夹中添加对应的ini文件及内容
[cc lang=”bash” escaped=”true”][root@WebAppServer bin]# vi /etc/php.ini
extension=oci8.so //在php.ini中加入此行[/cc]
或者直接在命令行输入
[cc lang=”bash” escaped=”true”][root@WebAppServer bin]# echo ‘extension=oci8.so’ > /etc/php.d/oci8.ini[/cc]
最后重启Apache服务器,这样你使用phpinfo()函数就可以看到多了pdo_oci和oci8两个扩展。这样你的PHP就可以使用oci相关函数和pdo来操作Oracle数据库了。
PHP连接Oracle报错:
报错一:CDbConnection failed to open the DB connection: SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data (/home/apacheapp/php-5.6.22/ext/pdo_oci/oci_driver.c:610)
报错二:Error: oci_connect(): OCIEnvNlsCreate() failed. There is something wrong with your system – please check that ORACLE_HOME and LD_LIBRARY_PATH are set and point to the right directories
报错三:Warning: oci_connect() [function.oci-connect]: OCIEnvNlsCreate() failed. There is something wrong with your system – please check that LD_LIBRARY_PATH includes the directory with Oracle Instant Client libraries的解决办法:
在php-fpm.conf最后加上以下两行就可以解决以上三种报错:
[cc lang=”bash” escaped=”true”]env[LD_LIBRARY_PATH] = /usr/lib/oracle/11.2/client64/
env[ORACLE_HOME] = /usr/lib/oracle/11.2/client64/[/cc]
2016年9月27日 下午10:50
感觉你的博客有点乱…文章多的话,分类分细一点还是挺好的
2016年9月28日 上午10:57
学习了,赞一个
2016年9月29日 上午11:50
看不懂啊,程序员大哥。
2016年10月4日 下午3:50
支持一下,欢迎回访!!
2016年10月6日 上午11:03
专业贴,顶一个!
2016年10月9日 上午9:47
真不错