CentOS系统中PHP安装扩展的方式汇总


Posted in PHP onApril 09, 2017

CentOS 下,PHP有多种方式来安装扩展, 主要有 包管理式yum 安装pecl 安装 , 以及 源码编译安装

包管理式 的安装卸载尤为方便,而 源码编译式 的安装则方便参数调优。

一般搭建本机开发环境推荐 包管理式 的安装,节约时间。而 线上部署 环境则推荐 编译安装 , 方便调优。

本文以 MongoDB 扩展`安装举例。

工具

PHP版本 : 7.0.17

Nginx : 1.10.2

VMware版本号 : 12.0.0

CentOS版本 : 7.0

一、yum 安装

yum 方式 安装能自动安装扩展的.so动态库,并配置好 php.ini

注:

请确保自己 yum 源 里面有对应扩展

安装完成后重启服务器 Nginx 或者 Apache

浏览器访问 index.php 文件,输出 phpinfo 信息,如果有 MongoDB 信息,则安装成功

[root@localhost ~]yum search mongodb|grep php  # 搜索 yum 源里面 MongoDB 拓展
[root@localhost ~]yum -y install php70w-pecl-mongo # 安装 PHP 对应版本的 MongoDB 扩展
[root@localhost ~]systemctl restart nginx   # 重新启动 Nginx

CentOS系统中PHP安装扩展的方式汇总

CentOS系统中PHP安装扩展的方式汇总

二、pecl 安装

官方文档: http://php.net/manual/zh/mong...

[root@localhost ~]# pecl install mongodb
-bash: pecl: 未找到命令

直接输入 pecl install mongodb 会报错,说明 pecl 我们没有安装,安装 pecl

[root@localhost ~]# yum -y install php70w-pear
[root@localhost ~]# pecl install mongodb
configure: error: Cannot find OpenSSL's <evp.h>
ERROR: `/var/tmp/mongodb/configure --with-php-config=/usr/bin/php-config' failed

到这一步又会 报错 ,需要我们安装 openssl ,安装完成后继续执行上次 未执行成功 的命令

CentOS系统中PHP安装扩展的方式汇总

[root@localhost ~]# yum -y install openssl openssl-devel
[root@localhost ~]# pecl install mongodb
[root@localhost ~]# systemctl restart nginx    # 重新启动 Nginx

安装完成后在 PHP 配置文件 php.ini 里面加载 MongoDB 扩展

CentOS系统中PHP安装扩展的方式汇总

安装完成后重启服务器 Nginx 或者 Apache

浏览器访问 index.php 文件,输出 phpinfo 信息,如果有 MongoDB 信息,则安装成功

CentOS系统中PHP安装扩展的方式汇总

三、源码编译安装

源码编译包下载列表: https://pecl.php.net/packages.php

Mongodb包下载地址: https://pecl.php.net/package/mongodb

[root@localhost ~]# wget http://pecl.php.net/get/mongodb-1.2.8.tgz #下载源码包
[root@localhost ~]# tar zxf mongodb-1.2.8.tgz #解压
[root@localhost ~]# cd mongodb-1.2.8
# 可能是 /usr/local/php/bin/phpize 找到自己的 phpize 文件,php-config 同理
[root@localhost mongodb-1.2.8]# /usr/bin/phpize 
Configuring for:
PHP Api Version:   20151012
Zend Module Api No:  20151012
Zend Extension Api No: 320151012
[root@localhost mongodb-1.2.8]# ./configure --with-php-config=/usr/bin/php-config
configure: error: Cannot find OpenSSL's <evp.h>

到了这步 又是熟悉的味道又是熟悉的感觉 ,需要我们安装 openssl ,安装完成后继续执行上次 未执行成功 的命令

CentOS系统中PHP安装扩展的方式汇总

[root@localhost mongodb-1.2.8]# yum -y install openssl openssl-devel
[root@localhost mongodb-1.2.8]# ./configure --with-php-config=/usr/bin/php-config
# 确保自己安装了 gcc gcc++ 如果没有安装 yum -y install gcc gcc++
[root@localhost mongodb-1.2.8]# make && make install # 编译

说明: php-config 是一个简单的命令行脚本用于 获取 所安装的 PHP 配置 的信息。

在编译扩展时,如果安装有多个 PHP 版本,可以在配置时用 --with-php-config 选项来指定使用哪一个版本编译,该选项指定了相对应的 php-config 脚本的路径。

编译成功 如下图

CentOS系统中PHP安装扩展的方式汇总

此时在 PHP 配置文件 php.ini 里面加载 MongoDB 扩展

CentOS系统中PHP安装扩展的方式汇总

重启服务器 Nginx 或者 Apache

浏览器访问 index.php 文件,输出 phpinfo 信息,如果有 MongoDB 信息,则安装成功

[root@localhost mongodb-1.2.8]# systemctl restart nginx # 重新启动 Nginx

CentOS系统中PHP安装扩展的方式汇总

总结:

pecl 安装源码编译安装 区别就是:后者更方便参数调优。

在选择 Mongo 扩展 的时候,官方提供了两种: mongomongodb

第一种: https://pecl.php.net/package/mongo

第二种: https://pecl.php.net/package/mongodb

第一种官方提示: This package has been superseded, but is still maintained for bugs and security fixes ,已经废弃了,不过 bugsecurity 方面的问题还会继续修复,不支持 PHP7

建议:

PHP 版本为 5.x 建议使用 mongo 扩展

PHP 版本为 7.x 建议使用 mongodb 扩展

PHP5.x 可以使用 mongodb 扩展。但是 PHP7.x 不可以使用 mongo 扩展。

写在最后:

如果是自己学习的话还是推荐 yum 安装 ,因为在你安装过程中会出现 缺少各种依赖报错

PHP 相关文章推荐
PHP分页函数代码(简单实用型)
Dec 02 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
php模板原理讲解
Nov 13 PHP
通过Email发送PHP错误的方法
Jul 20 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
Mar 31 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
JS操作XML中DTD介绍及使用方法分析
Jul 04 PHP
PHP7 参数处理机制修改
Mar 09 PHP
PHP将身份证正反面两张照片合成一张图片的代码
Apr 08 #PHP
ThinkPHP中调用PHPExcel的实现代码
Apr 08 #PHP
yii框架无限极分类的实现方法
Apr 08 #PHP
PHP下载远程图片的几种方法总结
Apr 07 #PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 #PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 #PHP
php 根据自增id创建唯一编号类
Apr 06 #PHP
You might like
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
基于thinkphp6.0的success、error实现方法
2019/11/05 PHP
基于jquery打造的百分比动态色彩条插件
2012/09/19 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
2016/12/22 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
angular 基于ng-messages的表单验证实例
2017/05/04 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
JSON是什么?有哪些优点?JSON和XML的区别?
2019/04/29 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
Flask入门教程实例:搭建一个静态博客
2015/03/27 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
django云端留言板实例详解
2019/07/22 Python
浅谈Python 函数式编程
2020/06/20 Python
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
同学会邀请书大全
2014/01/12 职场文书
应届生面试求职信
2014/07/02 职场文书
社区精神文明建设汇报材料
2014/08/17 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang
DE1103使用报告
2022/04/05 无线电
oracle数据库去除重复数据
2022/05/20 Oracle