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 cout<<的一点看法
Jan 24 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
Feb 19 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
完美解决PHP中的Cannot modify header information 问题
Aug 12 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
PHP中使用array函数新建一个数组
Nov 19 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
php nginx 实时输出的简单实现方法
Jan 21 PHP
PHP设计模式之委托模式定义与用法简单示例
Aug 13 PHP
PHP实现新型冠状病毒疫情实时图的实例
Feb 04 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
IStream与TStream之间的相互转换
2008/08/01 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
PHP链表操作简单示例
2016/10/15 PHP
设定php简写功能的方法
2019/11/28 PHP
jQuery控制图片的hover效果(smartRollover.js)
2012/03/18 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
JavaScript中的Object对象学习教程
2016/05/20 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
Node.js 实现简单小说爬虫实例
2016/11/18 Javascript
JavaScript学习笔记之惰性函数示例详解
2017/08/27 Javascript
webpack构建react多页面应用详解
2017/09/15 Javascript
Vuejs中使用markdown服务器端渲染的示例
2017/11/22 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
Python编写一个闹钟功能
2017/07/11 Python
详解python eval函数的妙用
2017/11/16 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
美国奢侈品在线团购网站:Gilt City
2017/11/16 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
继电保护工岗位职责
2014/01/05 职场文书
解除劳动合同协议书
2014/04/14 职场文书
家长学校工作方案
2014/05/07 职场文书
供用电专业求职信
2014/07/07 职场文书
2014年防汛工作总结
2014/12/08 职场文书
楚门的世界观后感
2015/06/03 职场文书
运输公司工作总结
2015/08/11 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
创业计划书之面包店
2019/09/12 职场文书
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android