Linux下PHP Oracle客户端扩展(OCI8)安装

来源:互联网 发布:js uri malformed 编辑:程序博客网 时间:2024/06/05 18:09

本篇文章是以32位系统为例。


所需文件下载地址:

http://www.oracle.com/technetwork/topics/linuxsoft-082809.html

下载的话必须注册,有好几十个字段让你填。。蛋疼去吧。。

 

要远程使用oracle,先下载下面三个文件,注意版本最好一致。

一、安装oracle客户端

rpm安装方法:

下载以下三个文件:

oracle-instantclient-basic-10.2.0.4-1.i386.rpm

oracle-instantclient-devel-10.2.0.4-1.i386.rpm    //这个是sdk 的,文件名上没有说明,特此说明

oracle-instantclient-sqlplus-10.2.0.4-1.i386.rpm

用以下命令安装

[root@localhost ~]# rpm -ivh oracle-instantclient-basic-10.2.0.4-1.i386.rpm oracle-instantclient-devel-10.2.0.4-1.i386.rpm oracle-instantclient-sqlplus-10.2.0.4-1.i386.rpm

 

编译安装方法:

oracle-instantclient-basic-10.2.0.4-1.i386.zip
oracle-instantclient-devel-10.2.0.4-1.i386.zip    //这个是sdk 的,文件名上没有说明,特此说明
oracle-instantclient-sqlplus-10.2.0.4-1.i386.zip

//查看oracle的sql语句,当然你如果无法上去,只能问远程oracle  的管理员了。
select * from V$version ; 

1、先创建三个客户端的安装目录,这三个目录可以自定义,但配置环境变量时,需要一致。

[root@localhost ~]# mkdir -p /opt/oracle/lib

[root@localhost ~]# mkdir -p /opt/oracle/sdk 
[root@localhost ~]# mkdir -p /opt/oracle/network/admin //配置监听器和网络环境。

2、解压上面下载的三个文件。
[root@localhost ~]# unzip oracle-instantclient-basic-10.2.0.4-1.i386.zip 
[root@localhost ~]# unzip oracle-instantclient-sqlplus-10.2.0.4-1.i386.zip

其中,这二个文件都解压到当前目录下的同一个目录下面:instantclient_10_2 

[root@localhost ~]# cd instantclient_10_2

把这个目录下的所有文件搬到  /opt/oracle/lib

最后解压oracle-instantclient-devel-10.2.0.4-1.i386.zip 把解压出来的文件 /opt/oracle/sdk

3、配置环境变量。

[root@localhost ~]# vi /etc/profile                  //注意,这是针对所有用户的环境变量,如果你想局限某用户,只能配置用户的配置文件了。

加入
export ORACLE_HOME=/opt/oracle 
export LD_LIBRARY_PATH=/opt/oracle/lib

# 如果是rpm安装的,这里应该是:

export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client

export LD_LIBRARY_PATH="/usr/lib/oracle/10.2.0.4/client/lib"

保存并退出。

[root@localhost ~]# source /etc/profile             //使配置文件立刻生效
[root@localhost ~]# echo $ORACLE_HOME               //查看一下配置的环境变量是否成功

/opt/oracle

4、配置监听器和网络环境。

因为本地没有安装oracle 数据库,所以需要从安装oracle 数据库的目录弄三个文件过来。

[root@localhost admin]# pwd 
/opt/oracle/network/admin 
[root@localhost admin]# ls 

listener.ora  sqlnet.ora  tnsnames.ora      //就这三个文件,放到这个目录下

5.编辑三个文件
[root@localhost ~]# vi tnsnames.ora 
BOSSDATA = 
  (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.107)(PORT =1521))                   //192.168.1.107  IP地址   ,端口号:1521 
    (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME =bossdata)                                                  //bossdata  全局数据名
    ) 
  ) 

EXTPROC_CONNECTION_DATA = 
  (DESCRIPTION = 
    (ADDRESS_LIST = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
    ) 
    (CONNECT_DATA = 
      (SID = PLSExtProc) 
      (PRESENTATION = RO) 
    ) 
  ) 

  vi listener.ora 
  SID_LIST_LISTENER = 
  (SID_LIST = 
    (SID_DESC = 
      (SID_NAME = PLSExtProc) 
      (ORACLE_HOME =\opt\oracle)         //注意,这个是刚才配置的$ORACLE_HOME 
      (PROGRAM = extproc) 
    ) 
  ) 

LISTENER = 
  (DESCRIPTION_LIST = 
    (DESCRIPTION = 
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) 
      (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.107)(PORT = 1521))      //这个上面有说明
    ) 
  )

6.已完成。测试。
[root@localhost ~]# cd /opt/oracle/lib

[root@localhost lib]# sqlplus 
sqlplus: error while loading shared libraries: libsqlplus.so: cannot openshared object file: No such file or directory 
//如果出现上面的问题,代表你的环境变量没设置好。请参考:第3点。

[root@localhost lib]# sqlplus system/javama@bossdata

SQL*Plus: Release 10.2.0.4.0 - Production on Sun Aug 1 12:20:08 2010 
Copyright (c) 1982, 2007, Oracle.  All Rights Reserved. 
Connected to: 
Oracle Database 10gEnterprise Edition Release 10.2.0.1.0 - Production 
With the Partitioning, OLAP and Data Mining options 
SQL>

这样测试客户端没问题了,再安装perl 的DBD


二、编译php-oci8

[root@localhost ~]# yum install libaio

下载地址http://pecl.php.net/package/oci8

然后执行命令

[root@localhost ~]# tar zxvf oci8-1.4.6.tgz

[root@localhost ~]# cd oci8-1.4.6/

[root@localhost ~]# /usr/local/php/bin/phpize

CFLAGS="-I/usr/include/oracle/10.2.0.4/client/"

CXXFLAGS="-I/usr/include/oracle/10.2.0.4/client/"

./configure --with-php-config=/usr/local/php/bin/php-config --with-oci8=/usr/lib/oracle/10.2.0.4/client/

上面橙色的表示php的安装路径,红色的表示oracle路径,oracle路径会因为版本的不同文件夹名称有所不同,要到相应目录查看一下,确认路径正确。

再执行:

[root@localhost ~]# make

如果报错,就执行

[root@localhost ~]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-oci8=instantclient,/usr/lib/oracle/10.2.0.4/client/lib

[root@localhost ~]# make

[root@localhost ~]# make install

成功后会提示你执行make test,那就执行吧,可能会出现一堆的fail,但是不要紧。继续make install。

修改php.ini文件,添加

extension = "oci8.so"

重启apache,用phpinfo()函数查看oci8是否安装成功。

如果是nginx服务器,重启一下php-fpm

第一次安装的时候装错版本,重装了很多遍显示的仍然事老版本的扩展,必须要删除oci8-1.3.5这个目录重新解压,执行上面的命令才可以。