1、首先下载https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
2、
rpm -ivh oracle-instanclient11.2-*
此时会生成/usr/lib/oracle/11.2/client64/lib/目录
[root@xinzhongkepcserver ~]# cd /usr/lib/oracle/11.2/client64/lib
[root@xinzhongkepcserver lib]# ls
glogin.sql libnnz11.so libociei.so libsqlplus.so ottclasses.zip
libclntsh.so libocci.so libocijdbc11.so ojdbc5.jar xstreams.jar
libclntsh.so.11.1 libocci.so.11.1 libsqlplusic.so ojdbc6.jar
二、修改/etc/ld.so.conf配置文件
追加以下内容 — 上面生成文件的路径,没有64的写client/lib/:
/usr/lib/oracle/11.2/client64/lib/
保存、退出,执行命令
三、安装oci8
下载最新的oci8组件
tar -xczf oci8-2.0.12.tgz
cd /www/server/php/72/src/ext/oci8
/www/server/php/72/bin/phpize (用phpize生成configure配置文件,千万注意:phpize、php-config、instantclient目录一定要找对,这个需要自己去找)
# ./configure --with-php-config=/www/server/php/72/bin/php-config --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib
然后执行make
最后make install
安装pdo_oci 扩展
进入php源码目录
/www/server/php/72/src/ext/pdo_oci
执行命令 /www/server/php/72/bin/phpize
./configure --with-php-config=/www/server/php/72/bin/php-config --with-pdo-oci=instantclient,/usr/lib/oracle/11.2/client64/lib
然后执行make
最后make install
/www/server/php/72/lib/php/extensions/no-debug-non-zts-20170718
安装完还是不能正常访问
找到这个原文连接才解决掉
https://www.cnblogs.com/kerrycode/p/13368640.html
# vi /etc/profile 增加下面配置
#Add by kerry
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
执行下面的命令使配置生效
#source /etc/profile
添加动态库配置文件
# vi /etc/ld.so.conf.d/oracle.conf
/usr/lib/oracle/11.2/client64/lib
~
执行命令
# ldconfig
关于ldconfig命令的用途介绍如下:
ldconfig是一个动态链接库管理命令。
为了让动态链接库为系统所共享,需运行动态链接库的管理命令
主要是在搜寻默认目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件,缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表。linux下的共享库机制采用了类似高速缓存机制,将库信息保存在/etc/ld.so.cache,程序连接的时候首先从这个文件里查找,然后再到ld.so.conf的路径中查找。为了让动态链接库为系统所共享,需运行动态链接库的管理命令ldconfig,此执行程序存放在/sbin目录下。
也可以使用下面shell脚本进行配置
sh -c "echo /usr/lib/oracle/11.2/client64/lib > /etc/ld.so.conf.d/oracle.conf";sudo ldconfig
验证测试时,sqlplus出现下面问题:
# sqlplus /nolog
sqlplus: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
出现这个错误的可能情况非常多,例如,环境变量配置有问题,缺少依赖包等等。这里前面的环境变量配置正常,排查依赖的库是否有问题,发现libnsl.so.1找不到。
# ldd /usr/lib/oracle/11.2/client64/bin/sqlplus
linux-vdso.so.1 (0x00007ffd0b7a5000)
libsqlplus.so => /usr/lib/oracle/11.2/client64/lib/libsqlplus.so (0x00007f927b563000)
libclntsh.so.11.1 => /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1 (0x00007f9278bb3000)
libnnz11.so => /usr/lib/oracle/11.2/client64/lib/libnnz11.so (0x00007f92787e6000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f92785e2000)
libm.so.6 => /lib64/libm.so.6 (0x00007f9278260000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9278040000)
libnsl.so.1 => not found
libc.so.6 => /lib64/libc.so.6 (0x00007f9277c7e000)
libnsl.so.1 => not found
libnsl.so.1 => not found
libaio.so.1 => /lib64/libaio.so.1 (0x00007f9277a7b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f927b522000)
根据下面命令判断依赖的libnsl包没有安装。
# yum list installed | grep libnsl
# yum list | grep libnsl
libnsl2.x86_64 1.2.0-2.20180605git4a062cf.el8 @anaconda
libnsl.i686 2.28-101.el8 BaseOS
libnsl.x86_64 2.28-101.el8 BaseOS
libnsl2.i686 1.2.0-2.20180605git4a062cf.el8 BaseOS
# yum install libnsl.x86_64
安装缺失的依赖包后,测试验证问题解决。
# sqlplus /nolog
SQL*Plus: Release 11.2.0.4.0 Production on Thu Jul 23 20:29:49 2020
Copyright (c) 1982, 2013, Oracle. All rights reserved.