ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

ubuntu 如何安装php7.2 oracle扩展

2024-01-07 10:42:01  阅读:59  来源: 互联网

标签:


一:介绍

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. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有