zoukankan      html  css  js  c++  java
  • Linux下PHP7.2扩展

    前言

        由于公司某项目需要连接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

  • 相关阅读:
    JavaWeb下载文件response
    jQuery的prop和attr的区别,及判断复选框是否选中
    【转载并整理】mysql 创建用户,数据库
    【转载】mysql配置模板(my-*.cnf)参数详细说明
    【转载】mysql 热备份
    【转载】centos 安装及配置 mysql5.5.3
    【微信开发】简单的微信分享小插件
    一些http或https请求的参数,什么情况下需要urlencode编码
    sublime在混杂的log数据中提取你想要的内容
    聊聊分布式事务【转】
  • 原文地址:https://www.cnblogs.com/charles1ee/p/11511520.html
Copyright © 2011-2022 走看看