前言

由于公司某项目需要连接oracle数据库,该项目使用的开发语言为PHP,故需要对PHP进行扩展

环境说明

服务器:Centos7

PHP:7.2, 源码安装;安装路径:/usr/local/xxx/php-7.2

扩展过程

前期准备

下载oracle所需客户端,我这里使用的是zip包.

下载地址

下载后存放到某路径下,我这里为/data/soft目录下

注意,php7版本的某些扩展已经集合到php的源码中,我们可以直接对php的源码进行重新编译,而不需要再下载所谓的其他软件包

如果php在安装完后删除了,需要去官网找寻对应的版本下载并解压,我这里用的是7.2.11的

安装oracle的客户端

解压instantclient-basic-linux.x64-12.2.0.1.0.zip,并移动到/usr/lib/目录下

unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
mv instantclient_12_2/ /usr/lib

解压instantclient-sdk-linux.x64-12.2.0.1.0.zip,将解压后的instantclient_12_2目录下sdk目录移动到/usr/lib/instantclient_12_2/下

unzip instantclient-sdk-linux.x64-12.2.0.1.0.zip
cp -rf instantclient_12_2/sdk/ /usr/lib/instantclient_12_2/

配置环境变量

vim ~/.bash_profile

export ORACLE_HOME=/usr/lib/instantclient_12_2
export LD_LIBRARY_PATH=/usr/lib/instantclient_12_2
export PATH=$ORACLE_HOME:$LD_LIBRARY_PATH:$PATH
source ~/.bash_profile
//查看环境变量,检验配置是否正确
echo $PATH

创建软连接

进入oracle目录

cd /usr/lib/instantclient_12_2
ln -s libclntsh.so.12.1 libclntsh.so
ln -s libclntshcore.so.12.1 libclntshcore.so 注意 libclntsh.so.12.1 根据下载版本不同而不同。如在 Oracle11.* 的版本则为 libclntsh.so.11.1。
而且该链接必须配置,否则在以下的 configure 配置步骤将会报错而导致配置失败。

编译扩展oci8

cd /data/soft/php-7.2.11/ext/oci8
//执行phpize
/usr/local/xxx/php-7.2/bin/phpize
//生成configure文件后执行configure
./configure --with-php-config=/usr/local/xxx/php-7.2/bin/php-config --with-oci8=shared,instantclient,/usr/lib/instantclient_12_2
//编辑过程中如果有问题就解决问题,如果没有继续执行
make && make install

将生成的oci8.so 添加到php.ini

vim /usr/local/xxx/php-7.2/lib/php.ini

重启php查看扩展是否添加

systemctl restart php-fpm7

/usr/local/xxx/php-7.2/bin/php -m

如果添加扩展后执行php -m 报错则使用第二方法

报错信息如下
libaio.so.1: cannot open shared object file: No such file or director
解决
yum install libaio
/usr/local/xxx/php-7.2.11/bin/pecl install oci8
之后输入如下安装即可.
instantclient,/usr/lib/instantclient_12_2/ 然后重启php

编译扩展pdo_oci

cd /data/soft/php-7.2.11/ext/pdo_oci
//执行phpize
/usr/local/xxx/php-7.2/bin/phpize
//生成configure文件后执行configure
./configure --with-php-config=/usr/local/xxx/php-7.2/bin/php-config --with-pdo-oci=instantclient,/usr/lib/instantclient_12_2
//编辑过程中如果有问题就解决问题,如果没有继续执行
make && make install

将生成的pdo_oci.so 添加到php.ini

vim /usr/local/xxx/php-7.2/lib/php.ini

重启php查看扩展是否添加

systemctl restart php-fpm7

/usr/local/xxx/php-7.2/bin/php -m

总结

在进行php扩展的过程中,走了很多的坑,前前后后忙活了大约一天多的时间,总算是处理好了.

前期看各种博客,发现很多是类似的,都无法实现.上面说有用rpm,有用zip包的,

也有使用的版本为11.2的,也有12.2的.经过自己不断的摸索,加上网上的文章

后来终于使用12.2版本的zip包安装上了.

参考文献:

https://www.jianshu.com/p/664bff2cbae6#fn2

https://www.jianshu.com/p/3628374e9f91

Linux下PHP7.2扩展的更多相关文章

  1. linux下php7安装memcached、redis扩展

    linux下php7安装memcached.redis扩展 1.php7安装Memcached扩展 比如说我现在使用了最新的 Ubuntu 16.04,虽然内置了 PHP 7 源,但 memcache ...

  2. linux下安装opcache扩展

    linux下安装opcache扩展   参考:http://www.php.net/manual/zh/opcache.installation.php 1 2 3 4 5 6 7 wget http ...

  3. 总结 Linux 下安装 PHP 扩展步骤

    总结一下 Linux 下安装 PHP 扩展步骤,这里以安装 PHP 的 redis 扩展为例. 一.拿到扩展包下载地址,下载扩展包 pecl 上搜索 redis wget http://pecl.ph ...

  4. linux 下安装php扩展

    linux下安装php扩展 步骤: 1.在扩展解压包目录执行 phpize 2.执行 ./configure --with-php-config=/usr/local/php/bin/php-conf ...

  5. linux下安装PHP扩展memcache

    公司的服务器 CentOS 7.5,PHP 5.6 下面都是最新的版本(支持到PHP5.6) 如需php7  下支持memcache扩展,请移步   https://www.cnblogs.com/h ...

  6. linux安装PHP7以及扩展

    Linux下安装PHP7 事先升级gcc4.8,然后安装PHP7,安装步骤参考:CentOS安装PHP7 1.Linux下编译的php没有php.ini 解决办法:从源代码目录中复制php.ini-d ...

  7. linux下PHP7安装memcache

    1.memcache服务器的安装 .分别把memcached和libevent下载回来,放到 /tmp 目录下: # cd /tmp # wget http://www.danga.com/memca ...

  8. linux下安装swoole扩展

    一.下载swoole 地址:https://github.com/swoole/swoole-src二.将下载好的压缩包放在linux服务器下三.解压压缩包到任意目录 # unzip swoole-s ...

  9. Linux下,PHP扩展安装(使用yum安装)

    直接操作linux,在命令模式下用yum 来安装PHP的扩展: 扩展:mysqli 命令: yum install php-mysqli 扩展:pdo 命令: yum install php-pdo

随机推荐

  1. label设置渐变时不显示纯英文纯数字字符串

    提出问题: 当对UILabel设置渐变color时,有点小问题.即:text为中文或中英混合字符串时显示正常,纯英文字符串不显示!!!   剖析问题: 经搜索了解到:在显示中文时,绘制渐变color的 ...

  2. Qt之模型/视图(自定义风格)

    Qt之模型/视图(自定义风格) 关于自定义风格是针对视图与委托而言的,使用事件与QSS都可以进行处理,今天关于美化的细节讲解一下. 先看下图: 先撇开界面的美观性(萝卜青菜,各有所爱),就现有的这些风 ...

  3. redis不支持多个数据库实例但是支持多个字典

    Redis多个数据库 注意:Redis支持多个数据库,并且每个数据库的数据是隔离的不能共享,并且基于单机才有,如果是集群就没有数据库的概念. Redis是一个字典结构的存储服务器,而实际上一个Redi ...

  4. 复习Android布局

    效果如图: 这里没有做逻辑的处理,仅仅是布局的罗列.包括垂直和水平的线性布局,以及一个滚动的view. <?xml version="1.0" encoding=" ...

  5. Ionic4.x Theming(主题) 增加内置主题 颜色 修改内置组件默认样式 修改底部 Tabs 背景颜色以及按钮颜色

    1.Ionic4.x Theming(主题) Ionic4.x 修改主题颜色的话需要在 src/theme/variables.scss 文件中修改. https://ionicframework.c ...

  6. angular中的服务和持久化实现

    1.创建服务: ng g service my-new-service 创建到指定目录下面 ng g service services/storage 2.app.module.ts 里面引入创建的服 ...

  7. SVG动画示例

    package com.loaderman.customviewdemo; import android.graphics.drawable.Animatable; import android.os ...

  8. 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_13-用户退出-前端

    调试前端的退出 logout方法 找到路由 退出对应的组件页面 这就是退出的组件 退出的方法 把这两个js的引用,从上面复制到下面引用.因为可能存在js的冲突问题. 资料里面给了一个前端 整个覆盖当前 ...

  9. (十八)Centos之firewall 防火墙命令

    如果你的系统上没有安装使用命令安装 #yum install firewalld  //安装firewalld 防火墙 开启服务 # systemctl start firewalld.service ...

  10. 涨停复盘:5G概念持续活跃,军工股强势崛起

    午后银行股快速拉升,三大股指大幅拉升,沪指一度临近2800点,但未能持续随后沪指小幅下行,题材股表现强势,证券板块高开低走.截止收盘,沪指涨0.93%,创业板指涨1.51%. 盘面上,银行板块午后拉升 ...