CentOS下安装PHP Oracle数据库扩展
一、安装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 | [root@WebAppServer apache]# rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm |
3、修改/etc/ld.so.conf,写入安装oracle客户端的lib路径:
1 | [root@WebAppServer apache]# vi /etc/ld.so.conf |
4、64位系统需要创建32位的软链接(这里可能是一个遗留bug,不然后面编译会出问题)
1 | [root@WebAppServer apache]# ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client |
5、定义环境变量
1 | [root@WebAppServer apache]# vi /etc/profile |
6、执行soucere命令使环境配置立即生效
1 | [root@WebAppServer apache]# source /etc/profile |
二.安装PHP pdo_oci扩展
PHP扩展通常可以使用来安装PHP扩展,也可以直接下载PHP扩展源码。本文以PHP源码ext文件夹使用phpize安装oci和pdo_oic扩展。防止pdo_oci对oracle11支持不足(pdo_oci可能不支持oracle11g,需要做个软链接成作为oracle10版本才能编译过去):
1 | [root@WebAppServer apache]# ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1 |
1.使用phpize安装扩展(phpize和php-config一般在PHP安装目录bin下面,这个需要根据自己的实际安装情况而定),进入到php/ext/pdo_oci对应的扩展文件夹
1 | [root@WebAppServer bin]# phpize |
2.修改PHP配置,有两种方法,一是直接在php.ini中打开扩展,二是在php.d文件夹中添加对应的ini文件及内容
1 | [root@WebAppServer bin]# vi /etc/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 | [root@WebAppServer bin]# phpize |
2.修改PHP配置,有两种方法,一是直接在php.ini中打开扩展,二是在php.d文件夹中添加对应的ini文件及内容
1 | [root@WebAppServer bin]# vi /etc/php.ini |
或者直接在命令行输入
1 | [root@WebAppServer bin]# echo 'extension=oci8.so' > /etc/php.d/oci8.ini |
最后重启,这样你使用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 | env[LD_LIBRARY_PATH] = /usr/lib/oracle/11.2/client64/ |