当前位置: 首页 > 工具软件 > Oracle+PHP > 使用案例 >

centos 安装Oracle php扩展

嵇星海
2023-12-01

一.准备文件

      (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.安装

 

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

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

 

 

rpm -qa | grep oracle                                                   //查看oracle是否安装  
rpm -qa                                                                 //查看所有已安装的人rpm包  
rpm -e oracle-instantclient11.2-basic-11.2.0.3.0-1.x86_64.rpm           //卸载已安装的rpm包  
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路径:

 

#vi /etc/ld.so.conf  
/usr/lib/oracle/11.2/client64/lib/     //加入此行,保存退出  
或者  
echo '/usr/lib/oracle/11.2/client64/lib/' > /etc/ld.so.conf.d/oracle-x86_64.conf

 

 

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

 

ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client  
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client

 

 

定义环境变量

 

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="AMERICAN_AMERICA.AL32UTF8"

 

 

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

 

#source /etc/profile

 

 

三、安装pdo_oci模块

    1.准备工作

 

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

 

 

ln -s /usr/include/oracle/11.2 /usr/include/oracle/10.2.0.1  
ln -s /usr/lib/oracle/11.2 /usr/lib/oracle/10.2.0.1

 

 

  2.安装

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

   然后开始安装

 

 

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-oci=instantclient,/usr,10.2.0.1
make && make install

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

 

 

  3.配置

 

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

 

#vi /etc/php.ini  
extension=pdo_oci.so  //在php.ini中加入此行  
  
 或者直接在命令行输入  
  
echo 'extension=pdo_oci.so' > /etc/php.d/pdo_oci.ini

 

 

四、安装oci8模块

 

   1.安装

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

 

/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config -with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client/lib
make && make install

 

 

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

 

    2.配置

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

 

#vi /etc/php.ini  
  
extension=oci8.so    //在php.ini中加入此行  
  
或者直接在命令行输入  
  
echo 'extension=oci8.so' > /etc/php.d/oci8.ini

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

 

 

 

 Server Version
Client Version12.2.0#1012.1.011.2.011.1.010.2.010.1.09.2.09.0.18.1.78.1.68.1.58.0.68.0.57.3.4
12.2.0YesYesYesNoNoNo#3No#3No#3No#3No#3No#3No#3No#3No#3
12.1.0YesYesYesWasMDS#7No#3No#3No#3No#3No#3No#3No#3No#3No#3
11.2.0Yes#9YesYesWasMDS#7NoWas#5No#3No#3No#3No#3No#3No#3No#3
11.1.0NoWasWasWasWas#7Was#6Was#5No#3No#3No#3No#3No#3No#3No#3
10.2.0NoMDS#7MDS#7Was#7MDSWasWas#5NoWasNo#3No#3No#3No#3No#3
10.1.0#4NoNoWas#6Was#6WasWasWasWasWas #2No#3No#3No#3No#3No#3
9.2.0NoNo#8Was#5Was#5Was#5WasWasWasWasNoNoWasNoNo#1
9.0.1NoNoNoNoNoWasWasWasWasWasNoWasNoWas
8.1.7NoNoNoNoWasWasWasWasWasWasWasWasWasWas
8.1.6NoNoNoNoNoNoNoWasWasWasWasWasWasWas
8.1.5NoNoNoNoNoNoNoNoWasWasWasWasWasWas
8.0.6NoNoNoNoNoNoWasWasWasWasWasWasWasWas
8.0.5NoNoNoNoNoNoNoNoWasWasWasWasWasWas
7.3.4NoNoNoNoNoNoWasWasWasWasWasWasWasWas
 
 
 

六.错误及解决方案

 

     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之后安装成功。

  

  3.错误代码:

 SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data 

  修改php-fpm.conf , 在[www]用户配置下加入如下两行代码 注意路径需要根据自己的修改

; Default Value: clean env
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
;Oracle连接环境变量 加入以下两行 
env[ORACLE_HOME] =/usr/lib/oracle/12.1/client64  
env[LD_LIBRARY_PATH] = /usr/lib/oracle/12.1/client64/lib

 

 

参考网站

http://blog.csdn.net/a82168506/article/details/11763989 centos下为php开oracle扩展

 

http://blog.csdn.net/youngqj/article/details/52061851

http://blog.sina.com.cn/s/blog_57c70e190101cdq1.html

 

 类似资料: