• Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)


    https://blog.csdn.net/shinesun001/article/details/54312402

    在centos 7环境下搭建好Lnmp环境之后,发现安装的php有好多扩展都没有安装,自己安装了一下遇到好多问题,在网上查找资料也没有一个全面的解决问题的办法,总是遇到各种错误。最终通过各种问题处理和各种探索,安装成功so扩展。现就以openssl.so扩展安装为例,来阐述一下php扩展的安装,步骤如下:

    首先在安装扩展之前说明一点:在Linux环境下的php的扩展后缀为“.so”,在Windows环境下的php的扩展名为“.dll”。

    接下来就讲一下安装扩展步骤:

    1、首先确定Linux下已安装的PHP版本,因为不同PHP版本对于追加动态模块有兼容性问题(可能路径,配置?其他?),往往报错不能安装,追加的模块必须版本一致。

    查看PHP版本有多种方法:

    ①运行php -v(但在我的64位Linux测试过没作用,原因你知道的了!)

    ②在已安装好的PHP路径下找到php-config并进行查看,可以vi或cat (关键字:version="XXXXXXX"为PHP版本号)

    vim php-config

    或者

    cat php-config

    在centos 7环境下可以使用:php --version 命令来查看php的版本

    2、到http://php.net/downloads.php  (相应PHP版本下载)地址下下载php相应的安装包,或者可以通过Linux命令下载(参考我的上一篇文章:在CentOS 7系统上搭建LNMP 环境 中php的安装);如果之前安装过,安装包存在的话,则不必下载;

    3、如果是本地下载则将通过ftp工具将php源码包上传到你的Linux环境下,上传成功后通过命令进行解压:

    解压命令如下:

    tar -jxvf  php-5.6.7.tar.bz2  (源代码tar包)

    4、接下来就到了openssl.so模块安装的时候了,进入刚刚解压过的php源码包文件夹后,执行configure进行模块追加,一下是命令部分(我的php源码文件包在/root/source下面,解压过后的源码包为php-5.6.7):

    [root@localhost source]# cd ./php-5.6.7/ext/openssl    #进入源码包的OPENSSL模块文件夹

    [root@localhost openssl]# /usr/local/bin/phpize             #在这里执行/usr/local/bin/phpize,注意这是已经安装好的php路径(提示:如果找不到/usr/local/bin/phpize,则使用命令whereis phpize来进行查找它的位置,我的phpize路径是/usr/local/bin/phpize)

    /usr/local/bin/phpize 命令执行过后可能会报一个错误:Cannot find config.m4.Make sure that you run '/usr/local/bin/phpize' in the top

    level source directory of the module.

    解决办法:

    查看PHP源码包openssl文件夹下是否有config0.m4,如果有,执行命令:

    [root@localhost openssl]# mv config0.m4 config.m4

    执行完成之后,再次执行/usr/local/bin/phpize命令,得到以下结果:

    会报一个:Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script. 的错误;

      

    解决办法:

    [root@localhost ~]# yum install m4

    [root@localhost ~]# yum install autoconf

    接下来再次执行:/usr/local/bin/phpize  出现如下结果表示执行成功:

       

    5、接下来就到了编译的阶段了,编译过程使用如下命令进行:

    [root@localhost openssl]# ./configure --with-openssl --with-php-config=/usr/local/bin/php-config

    注意:这里的/usr/local/bin/php-config是你的php安装路径,不知道的话,可以通过phpinfo来查看:

      

    不出意外的话,这条命令执行完成之后会报一个configure: error: Cannot find OpenSSL's <evp.h> 的错误,在执行完成的结尾:

    解决办法:

    [root@localhost ~]# yum install openssl openssl-devel

    [root@localhost ~]# ln -s /usr/lib64/libssl.so /usr/lib/

    再次执行:

    [root@localhost openssl]# ./configure --with-openssl --with-php-config=/usr/local/bin/php-config

    成功结果如下,会在结尾生成一个config.h文件:

      

    接下来继续执行命令:

    [root@localhost openssl]# make#执行编译

    [root@localhost openssl]# make test                 #测试编译的结果

    执行完make test 命令后会出现如下结果,这是问你是否想要发送一个报告,我在这里直接选n(n就是no的意思)

      

    再接着执行:

    [root@localhost openssl]# make install #进行安装

    出现如下结果表示安装成功:

      

    记住这里的这个路径,这个路径就是“.so”文件的存放路径,后面要使用。

    小提示:

    一般规范点的话,会把追加的SO模块放在一个指定的文件夹里,就在PHP安装好的目录下的extensions文件夹内

    #mv /*****/*****/openssl.so /var/www/php/lib/php/extensions

    至此,so动态模块追加编译已全部完成了。

    6、接下来就是进行配置了,让php支持加载这些追加的动态模块,vim编辑下php的配置文件php.ini

    使用vim打开php配置文件php.ini

    进入编辑器后可以看到php的所有相关配置,查找extension_dir这个配置选项;

    vi后可直接‘/extension_dir '查找,找到后可能是这样的:

    extension_dir="./"

    将其修改成:

    extension_dir="/usr/local/lib/php/extensions/no-debug-non-zts-20131226/"

    注意:这里的/usr/local/lib/php/extensions/no-debug-non-zts-20131226/就是刚才执行make install成功时返回的路径,

    也就是so文件的所在。

    添加:

    extension=openssl.so(so模块文件名)

    最后执行:

    ":wq!"

    命令保存退出

    接下来重启nginx和php服务

    [root@localhost ~]# nginx -s reload

    [root@localhost ~]# servive php-fpm restart

    到这里安装openssl扩展模块就已经完成了!如果在安装过程中遇到什么问题,可以及时和我交流!

    到此Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so就完成了。

    (不知道为啥,图片上传了两次都不能显示,就第三次上传,如果还是不能显示那也没办法,就只能这样了!)

  • 相关阅读:
    muduo网络库TcpConnection对象生存期管理
    马:ma一个与代码无关的隐形眼镜的度数换算
    分享ORACLE数据库密码口令过期被锁后的解锁方法
    关于SVN状态图标不显示的解决办法(史上最全)
    Windows 新增远程桌面会话连接数(可多人同时远程桌面,互不影响)
    js移除字符串的中文/空格
    ORA-00059: 超出 DB_FILES 的最大值
    ORA-02292违反完整约束和ORA-02297无法禁用约束条件 cascade禁用主键
    SVN—org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir
    js金额格式化
  • 原文地址:https://www.cnblogs.com/rxbook/p/9367768.html
Copyright © 2020-2023  润新知