ubuntu系统宝塔面板php7.1,安装php oracle扩展,编译oci8.so,远程连接oracle

本身后台用的php,现在要连接一个远程的oracle数据库,踩了很多坑,总结一下方法。
ubuntu系统宝塔面板php7.1,安装php oracle扩展,编译oci8.so,远程连接oracle。

一、安装oracle-instantclient 即时客户端库

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:在服务器建立文件夹,位置如下

/usr/lib 中创建 oracle 文件夹 ,并把上面的三个文件上传到oracle文件夹中
在这里插入图片描述

4:打开终端,进入oracle文件夹中

cd /usr/lib/oracle

5:安装alien和依赖包

sudo apt-get install alien libaio1

alien的作用是把rpm包转换成deb包,因为我们是ubuntu系统

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

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

7:安装完成后,应该会生成一个

12.1/client64/lib 的文件目录

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

1:下载oci8的对应扩展包
下载地址 http://pecl.php.net/package/oci8

php7.1,所以下载 oci8-2.2.0.tgz
在这里插入图片描述

2:解压后,上传到oracle文件夹里。
在这里插入图片描述

3:打开终端,cd到oci8-2.2.0目录

cd /usr/lib/oracle/oci8-2.2.0

4:编译安装,注意要找到对应的php版本的文件夹里的phpize文件

/www/server/php/71/bin/phpize

会生成三段文字,如下图
在这里插入图片描述
5:上面没问题的话,继续执行以下代码

./configure --with-php-config=/www/server/php/71/bin/php-config --with-oci8=shared,instantclient,/usr/lib/oracle/12.1/client64/lib
make && make install

6:正常的话,会生成一个oci8.so的文件,就在下图中的最后一行的目录中

在这里插入图片描述

三、修改php.ini文件

extension=php_oci8_12c.dll;
extension=php_pdo_oci.dll;

引入oci8.so
在这里插入图片描述

重启php,检查phpinfo是否有oci8的配置
在这里插入图片描述

四、测试连接

<?php
// Oracle数据库连接信息
        $oracle_host = "x.x.x.x";
        $oracle_port = "15211";
        $oracle_service_name = "orcl";
        $oracle_username = "xxxx";
        $oracle_password = "xxxx";

        // 构建连接字符串
        $tns = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=$oracle_host)(PORT=$oracle_port))(CONNECT_DATA=(SERVICE_NAME=$oracle_service_name)))";

        // 连接到Oracle数据库
        $conn = oci_connect($oracle_username, $oracle_password, $tns);

        if (!$conn) {
            echo "连接oracle失败!";exit;
        }
        
        // 查询表的个数统计
        $query = "SELECT COUNT(*) as table_count FROM user_tables";
        $stid = oci_parse($conn, $query);
        oci_execute($stid);
        
        $row = oci_fetch_assoc($stid);
        $tableCount = $row['TABLE_COUNT'];
        
        oci_free_statement($stid);
        oci_close($conn);
        
        echo "远程oracle数据库共有数据表的个数是: " . $tableCount;
   ?>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值