为了账号安全,请及时绑定邮箱和手机立即绑定

centos安装php的oracle扩展

标签:
PHP

一.准备工作

      本机已有环境为PHP,apache,mysql,需要连oracle数据库,所以需要打开oracle扩展。我们需要做的工作有:安装oracle客户端、pdo_oci扩展、oci8扩展

二.文件下载

      (1)oracle客户端rpm包下载地址

       http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 

      下载如下两个文件(下载文件需注册哦):

       oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm
      oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm

      (2)扩展文件下载,有两种方式,第一种是下载单独的扩展文件,一种是直接下载PHP源码,在ext文件夹中有对应的扩展文件夹,以下我们以第二种方式给大家介绍。

       http://pecl.php.net/package/PDO_OCI     PDO_OCI-1.0.tgz      Oracle Call Interface driver for PDO

       http://pecl.php.net/package/oci8        oci8-1.4.5.tgz       Extension for Oracle Database,allows you to access Oracle databases

       http://www.php.net/downloads.php   下载你本机对应版本的PHP

三.安装及配置oracle客户端

      1.安装     

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. #rpm -ivh oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm  

  2. #rpm -ivh oracle-instantclient11.2-devel-11.2.0.3.0-1.x86_64.rpm  

      以下几条rpm相关命令供参考:

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. rpm -qa | grep oracle                                                   //查看oracle是否安装  

  2. rpm -qa                                                                 //查看所有已安装的人rpm包  

  3. rpm -e oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm           //卸载已安装的rpm包  

  4. rpm -ivh --force oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm //强制安装rpm包  

      2.配置

      修改/etc/ld.so.conf  或在ld.so.conf.d文件夹下添加oracle-x86_64.conf文件,写入安装oracle客户端的lib路径:

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. #vi /etc/ld.so.conf  

  2. /usr/lib/oracle/11.2/client64/lib/     //加入此行,保存退出  

  3. 或者  

  4. echo '/usr/lib/oracle/11.2/client64/lib/' > /etc/ld.so.conf.d/oracle-x86_64.conf  


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

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client  

  2. ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client  


      定义环境变量

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. vi etc/profile  


      加入以下几行

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. export ORACLE_HOME=/usr/lib/oracle/11.2/client64/  

  2. export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64:$LD_LIBRARY_PATH  

  3. export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"  


      命令行输入以下语句使环境配置立即生效

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. #source /etc/profile  


四.安装pdo_oci模块

      1.准备工作

       防止pdo_oci对oracle11支持不足(pdo_oci可能不支持oracle11g,需要做个软链接成作为oracle10版本才能编译过去):

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1  

  2. ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1  


      2.安装

       进入对应的扩展文件夹,例如/php/ext/php_oci

       然后开始安装

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. #phpize  

  2. # ./configure --with-php-config=php-config --with-pdo-oci=instantclient,/usr,10.2.0.1  

  3. #make && make install  

  4. #ll /usr/lib64/php/modules/  


      可看到php_oci.so已在文件夹中

      3.配置

       有两种方法,其一,直接在php.ini中打开扩展,其二,在php.d文件夹中添加对应的ini文件及内容

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. #vi /etc/php.ini  

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

  3.   

  4.  或者直接在命令行输入  

  5.   

  6. echo 'extension=pdo_oci.so' > /etc/php.d/pdo_oci.ini  


五.安装oci8模块

      1.安装

      进入对应的扩展文件夹,开始安装

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. phpize  

  2. #./configure --with-php-config=php-config --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib  

  3. #make && make install  

  4. #ll /usr/lib64/php/modules  


      可看到oci8.so已在文件夹中

      2.配置

      有两种方法,其一,直接在php.ini中打开扩展,其二,在php.d文件夹中添加对应的ini文件及内容

[php] view plaincopy在CODE上查看代码片派生到我的代码片

  1. #vi /etc/php.ini  

  2.   

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

  4.   

  5. 或者直接在命令行输入  

  6.   

  7. echo 'extension=oci8.so' > /etc/php.d/oci8.ini  

       最后重启apache即可。phpinfo()可看到,php_oci及oci8扩展均已成功开启

六.错误及解决方案

     1.checking for oci.h... configure: error: I'm too dumb to figure out where the include dir is in your Instant Client install

      解决方法:检查--with-oci8,--with-pdo-oci的路径是否正确

    2.configure: error: Oracle Instant Client SDK header files not found

     解决方法:是否是sdk文件未安装,即rmp文件名中包含devel的文件,确认是否安装成功。

    如果确定已安装,可能是以下问题产生的,可能是你PHP的版本过低,我的PHP版本是PHP Version 5.1.6出现此问题之后,百思不得其解,各种查资料也找不到答案。

    两个解决方案:

    第一,将你的PHP版本升级,至少升到>=5.2.6

    第二,我前面说过,可以自行去下载扩展文件,我下载了oci8 1.4.5之后安装成功。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消