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就完成了。

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

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

  1. linux环境下安装git(采用github下载git源码编译)

    [目的]:linux环境下 安装配置git成功 [准备条件]linux系统,git包 1.先行下载git包 -- 从github上https://github.com/git/git/releases ...

  2. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

  3. 尚学linux课程---10、linux环境下安装python

    尚学linux课程---10.linux环境下安装python 一.总结 一句话总结: 直接在官网下载python的源码包即可,然后在linux下安装 linux下安装软件优先想到的的确是yum,但是 ...

  4. 在linux环境下安装redis并且搭建自己的redis集群

    此文档主要介绍在linux环境下安装redis并且搭建自己的redis集群 搭建环境: ubuntun 16.04 + redis-3.0.6 本文章分为三个部分:redis安装.搭建redis集群 ...

  5. Linux环境下使用VSCode编译makefile文件的注意事项

    Linux环境下使用VSCode编译makefile文件的注意事项 首先安装C/C++的两个依赖 在debug,launch会自动的生成下方的launch.json launch.json { // ...

  6. Linux 环境下安装python相关

    目录 Linux 环境下安装python相关 linux软件包管理工具之yum工具(如同pip3工具) yum源理解 下载阿里云的.repo仓库文件 ,放到/etc/yum.repos.d/ yum安 ...

  7. Linux环境下安装Redis

    记录一下Linux环境下安装Redis,按顺序执行即可,这里下载的是Redis5,大家可根据自己的需求,修改版本号就好了,亲测可行. 1.下载Redis安装包cd /usr/local/wget ht ...

  8. 尚学python课程---11、linux环境下安装python注意

    尚学python课程---11.linux环境下安装python注意 一.总结 一句话总结: 准备安装依赖包:zlib.openssl:yum install zlib* openssl*:pytho ...

  9. Linux环境下安装Tigase XMPP Server

    Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下 ...

  10. Linux环境下安装NodeJS和mongoDB

    前面的话 本文将详细介绍如何下Linux环境下安装NodeJS和mongoDB NodeJS [1]使用二进制包安装 1.在官网下载Linux环境下的NodeJS安装包 2.通过xftp软件将安装包上 ...

随机推荐

  1. Java EE发展史

    前言 最近的这段时间一直在学习Java EE,刚刚完成了从0到1的蜕变,所以顺便整理一下我所了解到的Java EE,给刚入门学习的新人一些头绪,而所谓“启示录”,就是这个意思. 一.Java EE是什 ...

  2. #define #undef

    #include <stdio.h> int main( void ) { #define MAX 200 printf("MAX= %d\n",MAX); #unde ...

  3. 10分钟10行代码开发APP(delphi 应用案例)

    总结一下用到的知识(开发环境安装配置不计算在内): 第六章  使用不同风格的按钮: 第十七章  让布局适应不同大小与方向的窗体: 第二十五章 使用 dbExpress访问 InterBase ToGo ...

  4. springbatch---->springbatch的使用(七)

    这里我们讲述一下springbatch中关于step层面上面的数据共享技术.而对街的人影都浸染在一片薄荷的白色中,由于无声,都好像经过漂染,不沾人间烟火. step的数据共享 关于springbatc ...

  5. ERROR 1045 (28000): Access denied for user 'mycat'@'localhost' (using password: YES)

    创建用户: mysql> grant all on db1.* to mycat@'%' identified by '123456'; Query OK, 0 rows affected (0 ...

  6. linux netcat命令使用技巧

    netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它.使用netcat命令所能完成的事情令人惊讶. netcat所做的 ...

  7. 浅谈P2P、P2C 、O2O 、B2C、B2B、 C2C的区别

    相信有很多人对P2P.P2C .O2O .B2C.B2B. C2C不是很熟悉,甚至是云里雾里,每天看着这些常见又陌生的名词,如果有人跟你说 让你解释它的含义,金融的小伙伴们是不是瞬间石化了,尤其是做淘 ...

  8. Django配合MySQL学习Django模型外键的建立和使用

    Django 模型建立外键 在模型中建立外键是很简单的,基本操作如下 class Table(models.Model) column_name = models.ForeignKey(other-T ...

  9. python nose测试框架全面介绍五--attr介绍

    之前写了一系列nose框架的,这篇介绍下attr tag 在nose框架中attr用来标识用例,使得在运行时可以通过标识来执行用例,之前在nose测试框架全面介绍四中有说明,但没有说明清楚,这里再总结 ...

  10. Unity3D笔记 愤怒的小鸟<六> 弹弓发射小鸟

    要实现的目标 实现个性化的鼠标 实现弹弓 选择小鸟.拉升弹弓.发射小鸟 弹弓橡皮筋 声音 1.实现个性化鼠标 效果 2.添加弹弓 建立两个材质 创建一个空GameObject 把两个shoot拖进来统 ...