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
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
# 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
..........
# 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
......