PHP连接oracle数据库,OCI模块安装

oracle服务器是 12g R2

操作系统版本CentOS 6.4 x86_64。

PHP安装

# yum install php php-pdo php-devel php-pear php-fpm php-gd php-ldap php-mbstring php-xml php-xmlrpc  php- zlib zlib-devel bc libaio glibc

一、.安装InstantClient

1、安装(http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html)

# rpm -ivh oracle-instantclient12.1-basic-12.1.0.1.0-1.x86_64.rpm
# rpm -ivh oracle-instantclient12.1-devel-12.1.0.1.0-1.x86_64.rpm
软链接
# ln -s /usr/include/oracle/12.1/client64 /usr/include/oracle/12.1/client
# ln -s /usr/lib/oracle/12.1/client64 /usr/lib/oracle/12.1/client

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

2、接下来还要让系统能够找到oracle客户端的库文件,修改LD_LIBRARY_PATH:

# vi /etc/profile.d/oracle.sh
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

3、使环境变量生效。

   # source /etc/profile.d/oracle.sh

二、 安装PDO_OCI

# wget  https://pecl.php.net/get/PDO_OCI-1.0.tgz
# tar -xvf PDO_OCI-1.0.tgz
# cd PDO_OCI-1.0

1、由于PDO_OCI很久没有更新,所以下面需要编辑ODI_OCI-1.0文件夹里的config.m4文件来让它支持12g:

# 在第10行左右找到与下面类似的代码,添加这两行:
elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.12.1; then
  PDO_OCI_VERSION=12.1
# 在第101行左右添加这几行:
12.1)
  PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD)
  ;;

2、编译安装pdo_oci扩展:(安装完成后可在 /usr/lib64/php/modules/pdo_oci.so 找到这个模块)

# phpize
# ./configure --with-pdo-oci=instantclient,/usr,12.1
# make
# sudo make install

3、要启用这个扩展,在/etc/php.d/下新建一个pdo_oci.ini文件,内容:

extension=pdo_oci.so

4、验证安装成功:

/etc/php.d/pdo_oci.ini,
PDO drivers => oci, sqlite
..........

三、安装OCI8

# wget  
# tar -xvf oci8-2.0.8.tgz
# cd oci8-2.0.8

1、编译安装oci8扩展:

# phpize
# ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client64/lib
# make# make install

2、要启用这个扩展,在/etc/php.d/下新建一个oci8.ini文件,内容:

extension=oci8.so

3、验证安装成功:

# php -i|grep oci8/etc/php.d/oci8.ini,
oci8
oci8.connection_class => no value => no value
......