环境: Linux Docker PHP7.3.31

1. 进入docker容器 docker exec -it xxxxx /bin/bash

2. cd /usr/local/src oracle_client等文件会放在这个文件夹下

3. 前往oracle官网下载我们需要的压缩包文件 Oracle下载点我

4. 分别下载如下三个文件 我这里是下载的11.2版本

(1)instantclient-basic-linux.x64-11.2.0.4.0.zip

(2)instantclient-sqlplus-linux.x64-11.2.0.4.0.zip

(3)instantclient-sdk-linux.x64-11.2.0.4.0.zip

5. 下载完成后通过FTP或者宝塔等其他形式上传到docker容器内放在/usr/local/src目录下, 注意!!! 不要传到宿主机了

6. 分别解压刚刚下载上传的3个文件
unzip instantclient-basic-linux.x64-11.2.0.4.0.zipunzip instantclient-sqlplus-linux.x64-11.2.0.4.0.zipunzip instantclient-sdk-linux.x64-11.2.0.4.0.zip

7. 3个解压后会得到 instantclient_11_2 目录 将文件夹改名(改不改都行) mv ./instantclient_11_2 ./instantclient

8. 进入instantclient目录 cd instantclient

9. 创建链接
ln -s libnnz11.so libnnz.soln -s libclntsh.so.11.1 libclntsh.soln -s libocci.so.11.1 libocci.so

10. 增加环境变量 vi. /ext/profile 在末尾新增

export ORACLE_HOME=/usr/local/src/instantclient
export PATH=$PATH:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=/usr/local/src/instantclient/lib
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/src/instantclient
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
保存后执行 
source /etc/profile         #使配置文件立刻生效
echo $ORACLE_HOME      #查看一下配置的环境变量是否成功
/usr/local/src/instantclient

12. 返回 cd /usr/local/src 目录

13. 下载OCI8拓展 wget https://pecl.php.net/get/oci8-2.2.0.tgz

14. 解压 tar -zxvf oci8-2.2.0.tgz

15. 进入 cd oci8-2.2.0 拓展解压后的目录

16. 找到你的PHP安装路径下的phpize(我这里用了宝塔所以) 执行 /www/server/php/73/bin/phpize, 没有宝塔的找到自己对应的php安装路径下的phpize

17. 执行 /configure --with-php-config=/www/server/php/73/bin/php-config --with-oci8=instantclient,/usr/local/src/instantclient (/www/server/php/73/bin/php-config也是你自己的php安装路径下的php-config)

18. 在执行make && make install 执行完毕oci8拓展就安装完成了

19. 在安装pdo_oci拓展 该扩展在php源码扩展包中存在无需额外下载 直接使用即可 (如果是宝塔在/www/server/php/你的PHP版本/src/ext/ 目录下) 执行 cd /www/server/php/73/src/ext/pdo_oci
20. 找到你的PHP安装路径下的phpize(我这里用了宝塔所以) 执行 /www/server/php/73/bin/phpize, 没有宝塔的找到自己对应的php安装路径下的phpize

21. 执行 ./configure --with-php-config=/www/server/php/73/bin/php-config --with-pdo-oci=instantclient,/usr/local/src/instantclient (/www/server/php/73/bin/php-config也是你自己的php安装路径下的php-config)

22. 在执行make && make install 执行完毕pdo_oci拓展就安装完成了

23. 在找到PHP配置文件增加
extension=oci8.soextension=pdo_oci.so

24. 至此拓展安装完成 运行phpinfo() 会出现oci8*

宝塔面板安装多个redis_ci


宝塔面板安装多个redis_ci_02


注:

如果遇到如下报错 请执行 dnf install -y libnsl*

PHP Warning:  PHP Startup: Unable to load dynamic library 'oci8.so' (tried: 
/www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/oci8.so (libnsl.so.1: cannot open 
shared object file: No such file or directory), /www/server/php/73/lib/php/extensions/no-debug-
non-zts-20180731/oci8.so.so (/www/server/php/73/lib/php/extensions/no-debug-non-zts-
20180731/oci8.so.so: cannot open shared object file: No such file or directory)) in Unknown on 
line 0

报错原因可以使用 ldd /www/server/php/73/lib/php/extensions/no-debug-non-zts-20180731/oci8.so查看拓展文件xx.so查看 会发现 libnsl.so.1 => not found 执行 dnf install -y libnsl* 就可以了

linux-vdso.so.1 (0x00007ffef858d000)
libclntsh.so.11.1 => /usr/local/src/instantclient/libclntsh.so.11.1 (0x00007f84ef21a000)
libc.so.6 => /lib64/libc.so.6 (0x00007f84eee55000)
libnnz11.so => /usr/local/src/instantclient/libnnz11.so (0x00007f84eea88000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f84ee884000)
libm.so.6 => /lib64/libm.so.6 (0x00007f84ee502000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f84ee2e2000)
libnsl.so.1 => not found
libaio.so.1 => /lib64/libaio.so.1 (0x00007f84ee0df000)
/lib64/ld-linux-x86-64.so.2 (0x00007f84f1db8000)

执行 dnf install -y libnsl*
linux-vdso.so.1 (0x00007ffd670c9000)
libclntsh.so.11.1 => /usr/local/src/instantclient/libclntsh.so.11.1 (0x00007f8d00e76000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8d00ab1000)
libnnz11.so => /usr/local/src/instantclient/libnnz11.so (0x00007f8d006e4000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f8d004e0000)
libm.so.6 => /lib64/libm.so.6 (0x00007f8d0015e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8cfff3e000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f8cffd25000) 就有了
libaio.so.1 => /lib64/libaio.so.1 (0x00007f8cffb22000)
/lib64/ld-linux-x86-64.so.2 (0x00007f8d03a14000)

对于PHP PDO连接Oracle数据库查询中文乱码问题

  1. 找到php安装目录下的etc目录下的php-fpm.conf文件 如图


宝塔面板安装多个redis_ci_03




在最后一行新增: env[NLS_LANG]=AMERICAN_AMERICA.AL32UTF8