linux php oracle扩展_CentOS下安装PHP Oracle数据库扩展

本文详细介绍了在CentOS系统上,如何安装PHP连接Oracle数据库所需的pdo_oci和oci8扩展。首先从Oracle官网下载并安装Oracle客户端,然后通过phpize编译安装pdo_oci和oci8扩展,最后配置PHP环境,重启Apache服务器以启用新扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本机在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客户端

[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路径:

[root@WebAppServer apache]# vi /etc/ld.so.conf

/usr/lib/oracle/11.2/client64/lib/

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

[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、定义环境变量

[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命令使环境配置立即生效

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

二.安装PHP pdo_oci扩展

PHP扩展通常可以使用PECL来安装PHP扩展,也可以直接下载PHP扩展源码使用phpize编译安装PHP扩展。本文以PHP源码ext文件夹使用phpize安装oci和pdo_oic扩展。防止pdo_oci对oracle11支持不足(pdo_oci可能不支持oracle11g,需要做个软链接成作为oracle10版本才能编译过去):

[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对应的扩展文件夹

[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文件及内容

[root@WebAppServer bin]# vi /etc/php.ini

extension=pdo_oci.so //在php.ini中加入此行

或者直接在命令行输入

[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对应的扩展文件夹

[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文件及内容

[root@WebAppServer bin]# vi /etc/php.ini

extension=oci8.so //在php.ini中加入此行

或者直接在命令行输入

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

env[LD_LIBRARY_PATH] = /usr/lib/oracle/11.2/client64/

env[ORACLE_HOME] = /usr/lib/oracle/11.2/client64/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值