Ubuntu中支持PHP5与PHP7双版本的简单实现


Posted in PHP onAugust 19, 2018

前言

最近在编写一个工具的时候,使用了PHP命名空间特性,在命名空间中如果想引用常量、函数,需要PHP5.6以上的版本,但我阿里云 ECS 上安装的版本是PHP 5.5.9,由于 ECS 部署了很多PHP代码,如果贸然升级高版本PHP,可能会存在一些兼容性的问题。突然奇想,在同一个操作系统中,是否能够同时支持两个版本的PHP呢?

简单查阅了相关资料,其实在 Ubuntu 中使用包安装方式支持PHP双版本非常简单,两个版本存在能够互不干扰,接下去简单做下介绍,其实相关文章很多。

1:获取PHP7源

我的操作系统版本是 Ubuntu 14.04.5 LTS,默认的PHP源是 5.5.9 版本,可以使用下列的命令确认:

$ apt show php

为了获取各个版本的PHP源,

在 Ubuntu 官方的 PPA 包含了很多软件的源,为了支持 PPA 包,可以采用 add-apt-repository 命令行安装,如果该工具没安装,可以运行下列命令安装:

$ apt install python-software-properties

简单理解下 add-apt-repository 工具,该工具的作用如下:

Adds a repository into the /etc/apt/sources.list or /etc/apt/sources.list.d or removes an existing one

也就是说无需你手动修改 /etc/apt/sources.list,就能够通过该工具添加源。

为了支持多版本的 PHP 的源,运行如下命令:

$ add-apt-repository ppa:ondrej/php

运行完成后,实际上 /etc/apt/sources.list.d/ondrej-php-trusty.list 文件更新了。

2:更新系统

添加源后,需要运行下列命令更新系统,然后再安装各个 PHP 版本。

$ apt-get update -y

3:安装PHP7.1

接下去看看目前有多少个PHP版本可以安装。

$ apt-cache pkgnames | grep php7

关键输出如下:

php7.0-fpm
php7.1-fpm
php7.2-fpm
libapache2-mod-php7.0
libapache2-mod-php7.1
libapache2-mod-php7.2

也就是支持两种 SAPI,我主要使用 Nginx+FPM 的方式,也可以看出目前支持三个版本的PHP7。

我主要想使用命令行 PHP7 版本,顺带也想着把 FPM 安装上,运行如下命令了解详细信息:

$ apt-cache depends php7.1-fpm

 Depends: php7.1-cli
 Depends: php7.1-common
 Depends: php7.1-json
 Depends: php7.1-opcache

可见 php7.1-fpm 也包含了命令行PHP(php7.1-cli),接下去安装:

$ apt-get install php7.1-fpm php7.1-curl

3:观察安装后的文件

运行如下命令,观察 php7.1-fpm 安装了哪些文件。

$ dpkg -L php7.1-fpm

关键输出如下:

/usr/sbin/php-fpm7.1
/etc/php/7.1/fpm/php-fpm.conf
/etc/apache2/conf-available/php7.1-fpm.conf

可以看出,你可以运行一个 PHP7 版本的 FPM 服务,和 /etc/php5/fpm/php-fpm.conf 使用的配置文件是互相隔离的,我的网站 www.simplehttps.com 和 blog.simplehttps.com  就使用了两个版本的 FPM。

接下去查看 php7.1-cli 安装了哪些文件,这是我最关心的。

$ dpkg -L php7.1-cli

关键输出如下:

/usr/bin/php7.1

4:如何切换两个PHP版本

对于命令行来说,两个版本的地址如下:

/usr/bin/php7.1
/usr/bin/php5

难道运行不同版本的时候,使用完整路径?其实可以使用 update-alternatives 工具配置默认项运行的 PHP 版本。

$ update-alternatives --set php /usr/bin/php7.1

这样运行 php -v 就相当于运行 /usr/bin/php7.1 -v,如果想使用PHP5版本,可以运行下列命令切换:

$ update-alternatives --set php /usr/bin/php5

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
php中的时间处理
Oct 09 PHP
基于mysql的论坛(7)
Oct 09 PHP
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
第十三节--对象串行化
Nov 16 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
php 按指定元素值去除数组元素的实现方法
Nov 04 PHP
整理php防注入和XSS攻击通用过滤
Sep 13 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
php实现断点续传大文件示例代码
Jun 19 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 #PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
Aug 17 #PHP
ThinkPHP5+Layui实现图片上传加预览功能
Aug 17 #PHP
PHP实现类似题库抽题效果
Aug 16 #PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 #PHP
Laravel框架实现定时发布任务的方法
Aug 16 #PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 #PHP
You might like
按上下级层次关系输出内容的PHP代码
2010/07/17 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
Seajs的学习笔记
2014/03/04 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
jQuery-1.9.1源码分析系列(十一)DOM操作续之克隆节点
2015/12/01 Javascript
javascript获取wx.config内部字段解决微信分享
2016/03/09 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
vue自定义filters过滤器
2018/04/26 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
基于js实现的图片拖拽排序源码实例
2020/11/04 Javascript
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
import的本质解析
2017/10/30 Python
使用python来调用CAN通讯的DLL实现方法
2019/07/03 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
NumPy统计函数的实现方法
2020/01/21 Python
用Python绘制漫步图实例讲解
2020/02/26 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
《小小竹排画中游》教学反思
2014/02/26 职场文书
汇源肾宝广告词
2014/03/20 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
考试作弊检讨书
2014/10/21 职场文书
教师工作总结范文2014
2014/11/10 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
干货:企业内部人才推荐奖励方案!
2019/07/09 职场文书