一、前言

应项目开发需要,需要连接ORACLE数据库,PHP环境并没有安装OCI8扩展,我们需要自己安装一下。

PHP开发的项目大多数时候都是使用MYSQL,这是第一次使用PHP连接ORACLE,在安装OCI8扩展的时候遇到了很多的坑和问题,借这篇文章记录和分享下经验。

网上也有很多相关的文章供大家参考,但是总感觉缺点什么,这篇文章就当做一个补充。

二、扩展安装

准备工作

首先要了解自己的php版本 oracle版本,确保自己下载的资源适用于你的环境

我这里用的docker环境,php-fpm镜像是从docker hub上拉取的

docker镜像:php:7.2-fpm (PHP版本:7.2.17)

oracle版本:10.2.0.5.0 - 64bi

依赖软件下载

下在oci8扩展(需要根据php版本下载)PECL :: Package :: oci8请添加链接描述 我这里用的是2.1.1

我这里下载的版本是:basic-10.2.0.5.0-linux-x64.zip sdk-10.2.0.5.0-linux-x64.zip

开始安装

3.1 安装oracle client

把下载好的:basic-10.2.0.5.0-linux-x64.zip sdk-10.2.0.5.0-linux-x64.zip

解压放到/usr/local/instantclient_10_2

basic-10.2.0.5.0-linux-x64.zip sdk-10.2.0.5.0-linux-x64.zip 这两文件解压后的目录是相同的,解压后会直接覆盖,sdk-10.2.0.5.0-linux-x64.zip 其实里面只有个sdk目录,和mv sdk目录到/usr/local/instantclient102相同

这里我创建了两个软链:

ln -s libclntsh.so.10.1 libclntsh.so

ln -s /usr/local/instantclient_10_2 /usr/local/instantclient(第二个软链可以忽略)

软链也可以不创建,在后面位置使用文件的时候,路劲和文件指定没问题就行

环境变量设置很重要!!!!!!!!!!!

临时环境变量配置

设置环境变量:export LD_LIBRARY_PATH="/usr/local/instantclient_10_2"

永久环境变量设置

修改profile文件:

#vi /etc/profile

在里面加入:

export LD_LIBRARY_PATH="/usr/local/instantclient_10_2"

让环境变量立即生效需要执行如下命令:

#source /etc/profile

docker里面,以上两种设置方式都不生效!!!!!!!!

docker设置环境变量需要修改Dockerfile

ENV LD_LIBRARY_PATH="/usr/local/instantclient_10_2"

然后重新编译镜像

确认自己的环境变量是否设置成功,可以通过命令 export -p 查看环境变量,已经看到我的已经设置成功了

3.2 安装oci8扩展

解压下载好的:oci8-2.1.1.tgz

正常编译安装

cd oci8-2.1.1

phpize

./configure --with-oci8=shared,instantclient,/usr/local/instantclient_10_2 (编译这步需要传oracle client地址)

make && make install

到这里PHP如果没报错就安装完成了,如果报错可能是安装的扩展版本不对

执行php -m命令确认扩展是否安装成功,如下图,这里已经安装成功

3.3 生成基于oci8的php-fpm镜像

我这里是基于镜像安装的扩展,直接提交了份新镜像,然后重新通过docker run -e命令来设置的环境变量,这样在镜像启动后环境变量也不会丢失。

下面是具体命令供参考:

docker commit -a "zhaowenhao" -m "安装oci8扩展" 902e708645d7 zhaowenhao/php-fpm:oci8

docker run -p 9000:9000 -e LD_LIBRARY_PATH="/usr/local/instantclient_10_2" --name php-fpm-oci8 -d zhaowenhao/php-fpm:oci8

图片仅供参考:

测试安装是否成功

通过运行如下php命令来确认是否连接oracle成功,不抛异常错误,说明连接成功。

php -r "oci_connect('用户名','密码', 'IP地址/数据库名称');";

三、总结

此次安装oci8扩展遇到的问题几点

oracle client版本不对

oci8扩展版本不对

环境变量未设置(这个最重要!!!!)

不设置环境变量oci8扩展也能安装成功,但是在启动PHP的时候会报unable to load dynamic library oci8.so,如下图是具体的报错信息

oci8 php,PHP安装OCI8扩展相关推荐

  1. centos7 php oci,linux centos centos7 安装oci8和pdo_oci扩展

    linux centos7 安装oci8和pdo_oci扩展 一.基本环境 1.centos7_64+Apache/2.4.7+PHP5.3.27: 2.oracle11.2(远程) 3.设置orac ...

  2. linux php pdo oci,linux centos centos7 安装oci8和pdo_oci扩展

    linux centos7 安装oci8和pdo_oci扩展 一.基本环境 1.centos7_64+Apache/2.4.7+PHP5.3.27: 2.oracle11.2(远程) 3.设置orac ...

  3. Linux 下安装oci8扩展

    一.安装oracle-instantclient 下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 分 ...

  4. windows下php连接oracle安装oci8扩展报错(PHP Startup: Unable to load dynamic library ‘oci8_11g‘)

    记录一下php7.29安装oci8的艰苦过程,简直就是唐僧西天取经历经九九八十一难. 使用的是phpstudy_pro安装的ph扩展wnmp环境下: 1 .安装oralce Instant Clien ...

  5. PHP7安装Oracle扩展

    一.安装 1.安装Oracle依赖 rpm -ivh oracle-instantclient-basic-21.4.0.0.0-1.x86_64.rpm rpm -ivh oracle-instan ...

  6. oracle php 安装教程,PHP安装ORACLE扩展(oic8安装教程)

    本文主要叙述,php环境与oracle数据库不在同一台服务器上时,php环境的安装编译 按照官方说明文档 http://cn2.php.net/manual/zh/oci8.installation. ...

  7. php amqp扩展安装,php扩展AMQP,安装报错解决

    接下来来安装php扩展AMQP,安装了它以后,才能用PHP操作rabbitmq. wget https://pecl.php.net/get/amqp-1.4.0.tgz tar -zxvf amqp ...

  8. wamp环境下安装imagick扩展

    先上图,如下是安装成功后的phpinfo()界面: 安装步骤: 1.先确定安装版本,比如我的的php : php7.0.12  x86 ts 那么就需要三方版本 要一致:imagick软件本身( 如x ...

  9. Linux环境安装phpredis扩展

    php访问redis需要安装phpredis扩展,phpredis是用纯C语言写的. phpredis下载地址 https://github.com/phpredis/phpredis 最新的版本是p ...

最新文章

  1. shell中十种实现自加的方法
  2. 微软出手,干翻 IDEA?网友:先干翻Eclipse吧..
  3. 4.2 开发者选项--电源错误报告的适配
  4. 手动命令行编译APK
  5. volatile修饰的变量_看了这篇volatile详细介绍,面试你会害怕?
  6. mysql timezone utc_在与mysql的配置当中一定要注意的一点是设置serverTimezone=UTC
  7. jquery方法.serializeArray()获取name和value并转为json数组
  8. 2021年春季学期期末统一考试 西方经济学(本) 试题
  9. Hemberg-lab单细胞转录组数据分析(七)-导入10X和SmartSeq2数据Tabula Muris
  10. MinGW-w64的安装及配置教程
  11. ElementUI之el-pagination样式修改(小三角、“前往”、页码数)
  12. 来谈谈O2O线上线下电商解决方案
  13. 使用Python+selenium实例化Microsoft Edge或Chrome浏览器对象和常见的报错
  14. 笔记本无法找到WiFi信号,需要手动设置wlan autoconfig的解决办法
  15. 纯HTML+JS实现跑酷游戏
  16. 预测性分析及常用预测方法
  17. 离散数学知识点及错题集合 第一章
  18. SEIR模型及多染病仓室再生数的推导
  19. POI 读取word (word 2003 和 word 2007
  20. JavaScript强化教程——JavaScript 总结

热门文章

  1. 太吾绘卷第一世攻略_太吾绘卷种田流图文攻略 太吾绘卷种田流建筑推荐
  2. html 添加audio 无法自动播放,移动端不支持audio自动播放解决方案
  3. PHP中文网免费视频教程
  4. python 网页设计实践报告_网页设计实习报告4000字
  5. gif动态表情包在线制作的操作技巧
  6. “按键精灵”教你自动免费刷出QQ靓号
  7. 神犇营-26-最大数输出
  8. 谷歌浏览器的暗黑模式(实验室)——一个眼睛快被亮瞎的程序员的自救
  9. sybase基本命令
  10. 客观评价下软件培训机构