CentOS下安装PHP Oracle数据库扩展

分类:Linux 时间:

本机在CentOS系统下已有环境为PHP5.6,Apache2.4,因为PHP项目需要连接远程Oracle数据库,所以要打开PHP支持Oracle的扩展pdo_oci和oci8。安装pdo_oci扩展和oci8扩展之前必须先安装Oracle客户端。关于Windows下PHP支持Oracle的操作PHP程序员雷雪松的博客前面已经讲到,不清楚的可以查阅下。现在PHP程序员雷雪松详细的讲解下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客户端

1
2
[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

3、修改/etc/ld.so.conf,写入安装oracle客户端的lib路径:

1
2
[root@WebAppServer apache]# vi /etc/ld.so.conf
/usr/lib/oracle/11.2/client64/lib/

4、64位系统需要创建32位的软链接(这里可能是一个遗留bug,不然后面编译会出问题)

1
2
[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

5、定义环境变量

1
2
3
4
5
[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"

6、执行soucere命令使环境配置立即生效

1
[root@WebAppServer apache]# source /etc/profile

二.安装PHP pdo_oci扩展
PHP扩展源文件有两种方式获得,第一种是在PECL下载单独的扩展文件,第二种是直接下载PHP源码,在ext文件夹中有对应的扩展文件夹。本文以第二种PHP源码ext文件夹安装oci和pdo_oic扩展。防止pdo_oci对oracle11支持不足(pdo_oci可能不支持oracle11g,需要做个软链接成作为oracle10版本才能编译过去):

1
2
[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

1.使用phpize安装扩展(phpize和php-config一般在PHP安装目录bin下面,这个需要根据自己的实际安装情况而定),进入到php/ext/php_oci对应的扩展文件夹

1
2
3
[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

2.修改PHP配置,有两种方法,一是直接在php.ini中打开扩展,二是在php.d文件夹中添加对应的ini文件及内容

1
2
[root@WebAppServer bin]# vi /etc/php.ini
extension=pdo_oci.so //在php.ini中加入此行

或者直接在命令行输入

1
[root@WebAppServer bin]# echo 'extension=pdo_oci.so' > /etc/php.d/pdo_oci.ini

三.安装PHP oci8扩展
1.使用phpize安装扩展(phpize和php-config一般在PHP安装目录bin下面,这个需要根据自己的实际安装情况而定),进入到php/ext/oci8对应的扩展文件夹

1
2
3
[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

2.修改PHP配置,有两种方法,一是直接在php.ini中打开扩展,二是在php.d文件夹中添加对应的ini文件及内容

1
2
[root@WebAppServer bin]# vi /etc/php.ini
extension=oci8.so //在php.ini中加入此行

或者直接在命令行输入

1
[root@WebAppServer bin]# echo 'extension=oci8.so' > /etc/php.d/oci8.ini

最后重启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最后加上以下两行就可以解决以上三种报错:

1
2
env[LD_LIBRARY_PATH] = /usr/lib/oracle/11.2/client64/
env[ORACLE_HOME] = /usr/lib/oracle/11.2/client64/

标签:
来源:CentOS下安装PHP Oracle数据库扩展

6 评论 “CentOS下安装PHP Oracle数据库扩展

    廖梓旭 评论:
    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

    真不错

发表评论

电子邮件地址不会被公开。 必填项已用*标注