centos6.5 PHP开启oci8扩展

一、安装oracle-instantclient

下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html

分别下载 oracle-instantclient18.3-basic-18.3.0.0.0-3.x86_64.rpm  和   oracle-instantclient18.3-devel-18.3.0.0.0-3.x86_64.rpm

放在/usr/packages/目录下,执行:

#  cd /usr/packages/

# rpm -ivh oracle-instantclient*

此时会生成/usr/lib/oracle/18.3/client64/lib/目录。*注:下载对应数据库版本

(上面路径一定要去看看是否生成了,这很重要,路径名称可能不同)

 

二、修改/etc/ld.so.conf配置文件

追加以下内容 -- 上面生成文件的路径,没有64的写client/lib/:

/usr/lib/oracle/18.3/client64/lib/

保存、退出,执行命令 # ldconfig

 

三、安装oci8

下载最新的oci8组件

最新提示:oci8组件不要自己下载,自己下载的很容易会因为版本不对应而导致后面的make不成功,直接去自己的php源码安装包里找就行了!

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

下载 oci-2.0.8.tgz   注意,2.1.7以上的版本对应的PHP版本是PHP 7,注意服务器上的PHP版本,如果版本对应错误,后面make安装时会报错

放在/usr/packages/目录下,依次执行:

# cd /usr/packages/

# tar -xvzf oci-2.0.8.tgz

# cd oci-2.0.8

# /usr/local/php/bin/phpize (用phpize生成configure配置文件,千万注意:phpize、php-config、instantclient目录一定要找对,这个需要自己去找)

# ./configure --with-php-config=/usr/local/php/bin/php-config --with-oci8=shared,instantclient,/usr/lib/oracle/18.3/client64/lib

# make && make install

成功后会告诉你oci8.so已经成功放在以下目录(这仅仅是我的目录,你的可能不同);

 /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
 

四、配置PHP支持OCI扩展

修改php配置文件

# vi /usr/local/php/etc/php.ini文件

在extension项后追加以下内容

extension=oci8.so

 

五、重启LNMP

 

六、测试数据库连接

在站点根目录编写oracle.php

代码如下:

 

<?php

header("Content-type: text/html; charset=utf-8");

$conn= oci_connect('report', 'report', 'ip:port/service','zhs16gbk');

if($conn) {

  echo"连接oracle成功!";

}else{

  echo"连接oracle失败!";exit;

}

?>

 

======================================================

安装pdo_oci扩展

进入php的源码安装包:cd /usr/local/src/php-7.1.25/ext/pdo_oci

执行/usr/local/php/bin/phpize

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

sed -i 's|PHP_FE_END|{NULL,NULL,NULL}|' ./ext/pdo_oci/*.c
sed -i 's|ZEND_MOD_END|{NULL,NULL,NULL}|' ./ext/pdo_oci/*.c

 

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

./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib,10.2.0.1

 

在extension项后追加以下内容

extension=pdo_oci.so

 

#/usr/lib64/php/modules/

#/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/

 

都配置完后,用php连接oracle报错,SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data (/usr/local/src/php-5.4.25/ext/pdo_oci/oci_driver.c:614)

解决办法:

编辑/usr/local/php/etc/php-fpm.conf

在最后面增加两行

env[LD_LIBRARY_PATH] = /usr/lib/oracle/18.3/client64/lib
env[ORACLE_HOME] = /usr/lib/oracle/18.3/client64/lib

 

posted @ 2019-04-26 14:59  day959  阅读(348)  评论(0编辑  收藏  举报