一:介绍

php要连接访问oracle需要安装三个东西

1:Oracle Instant Client:即时客户端库

2:php的Oracle数据库扩展:oci8

3:php连接pdo的oci扩展:pdo_oci

原理:oci8提供php驱动,封装方法,php通过oci8内置的方法连接Oracle Instant Client,实现链接、操作oracle。然后通过pdo_oci供php语言操作。

二:安装oracle即时客户端

1:首先到oracle官网下载三个东西:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html

2:我这里选择12.1版本。这三个东西分别是:basic、devel、sqlplus

oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

3:安装alien和依赖包

sudo apt-get install alien libaio1
 alien的作用是把rpm包转换成deb包,因为我们是ubuntu系统

4:依次安装安装上面三个东西

sudo alien -i oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
sudo alien -i oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
sudo alien -i oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

alien -i:把rpm装成deb安装

如果没有报错的话,安装的默认位置在这:/usr/lib/oracle/

三:安装 php的Oracle数据库扩展:oci8

我们通过pecl来安装

1:安装pecl命令

apt-get install php-pear 

2:安装php-dev,因为pecl会用到phpize,而这个东西在php-dev里面

apt-get install -y php7.2-dev 

3:更新一下pecl channel

sudo pecl channel-update pecl.php.net

4:到 pecl官网看下,这玩意儿怎么用 https://pecl.php.net/package/oci8

5:安装oci8

pecl install oci8-2.2.0

回车后出现这个画面:

把我们安装oracle即时客服端的位置写进去,上面红色标注。然后回车:

instantclient,/usr/lib/oracle/12.1/client64/lib

如果一切顺利的话,最终是这个画面:


说明
安装成功了

四:安装pdo_oci扩展

我的php 是apt install 安装,执行:apt-cache search php7.2,发现没有pdo_oci,没有的话我们就去官网下载源码编译安装。首先查看php版本,然后下载对应版本的php源码。

https://www.php.net/releases/

下载后解压,进入ext/pdo_oci准备编译

tar -xvf php-7.2.24.tar.gz
cd php-7.2.24/ext/pdo_oci

编译安装:

phpize
./configure --with-pdo-oci=instantclient,/usr/lib/oracle/12.1/client64/lib
make
make install
 ./configure 后面这一串和安装oci8的时候完全一样 

五:加入php.ini

我们可以查看一下扩展的位置:

然后加入php.ini配置

extension=oci8.so
extension=pdo_oci.so
 注意:extension=extension=oci8.so 一定要加载pdo.so的后面,不能在前面加载,注意加载顺序

然后重启一下fpm

五:php连接oracle

<?php
try{
$conn = new \PDO('oci:dbname=192.168.1.102/orcl;charset=utf8', 'user', 'password');
$conn ->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
print_r($result);
}catch(PDOException $e){
echo $e->getMessage(); //异常
}
 

最新文章

  1. [Erlang 0121] 当我们谈论Erlang Maps时,我们谈论什么 Part 3
  2. C#调用百度地图 api
  3. 前端开发者进阶之函数柯里化Currying
  4. 解决log4j:WARN No appenders could be found for logger
  5. Leetcode: LFU Cache &amp;&amp; Summary of various Sets: HashSet, TreeSet, LinkedHashSet
  6. CentOS 6.5下静默安装oracle
  7. NOIP1999邮票面值设计[搜索|DP]
  8. Zookeeper安装部署
  9. android.util.LruCache类
  10. C# 创建新RTF文件
  11. BaseFragment的定义—所有Fragment的父类
  12. HPUX平台经常使用命令列举
  13. Maven学习(三)
  14. 通过JQuery实现Ajax代码
  15. bzoj1001(对偶图最短路)
  16. 前端入门4-CSS属性样式表
  17. android:screenOrientation属性
  18. Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并处理异常
  19. elk 的报错和优化
  20. java并发编程实战:第四章----对象的组合

热门文章

  1. Java集合 - ConcurrentHashMap
  2. 狂神的springboot课程员工管理系统
  3. py教学之集合
  4. 让你的手,不再抽筋,速度:修改mac的快捷键,以及鼠标滑动
  5. 使用ProPerties集合存储数据-Properties集合中的方法store
  6. 《深入理解Java虚拟机》第三章读书笔记(二)——HotSpot垃圾回收算法实现(OopMap,安全点安全区域,卡表,写屏障,三色标记算法)
  7. Vue31 消息订阅和发布
  8. Vue的介绍
  9. 有序数组的平方&amp;长度最小的子数组&amp;螺旋矩阵Ⅱ
  10. .net NPOI Excel导入:时间格式2022/5/26导入变成26-5月-2022