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 相关文章推荐
Ajax PHP分页演示
Jan 02 PHP
php5 图片验证码实现代码
Dec 11 PHP
ThinkPHP中实例Model方法的区别说明
Aug 21 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
PHP模拟asp中response类实现方法
Aug 08 PHP
PHP MVC框架路由学习笔记
Mar 02 PHP
PHP设置images目录不充许http访问的方法
Nov 01 PHP
php安装dblib扩展,连接mssql的具体步骤
Mar 02 PHP
Yii2框架redis基本应用示例
Jul 13 PHP
PHP批斗大会之缺失的异常详解
Jul 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中通过ADODB库实现调用Access数据库之修正版本
2006/12/31 PHP
PHP 实现类似js中alert() 提示框
2015/03/18 PHP
Adnroid 微信内置浏览器清除缓存
2016/07/11 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
javascript获取form里的表单元素的示例代码
2014/02/14 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
SuperSlide标签切换、焦点图多种组合插件
2015/03/14 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
微信小程序实现页面浮动导航
2019/01/28 Javascript
[02:42]DOTA2英雄基础教程 杰奇洛
2013/12/23 DOTA
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
Python通过解析网页实现看报程序的方法
2014/08/04 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
python提取xml里面的链接源码详解
2019/10/15 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
Python基于template实现字符串替换
2020/11/27 Python
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
园林设计师自荐信
2013/11/18 职场文书
采购主管岗位职责
2014/02/01 职场文书
生产厂长岗位职责
2014/02/21 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
骨干教师个人总结
2015/02/11 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
关于分班的感言
2015/08/04 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis