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 echo 输出字符串函数详解
May 13 PHP
php生成随机密码的几种方法
Jan 17 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
在CentOS系统上从零开始搭建WordPress博客的全流程记录
Apr 21 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 PHP
PHP递归删除多维数组中的某个值
Apr 17 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
微信公众号开发之获取位置信息php代码
Jun 13 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
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
php中使用url传递数组的方法
2015/02/11 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
AngularJS 教程及实例代码
2017/10/23 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
Angular5中提取公共组件之radio list的实例代码
2018/07/10 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
css3的动画特效之动画序列(animation)
2017/12/22 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
警察先进个人事迹材料
2014/05/16 职场文书
韩语专业职业生涯规划范文:成功之路就在我们脚下
2014/09/11 职场文书
汇报材料怎么写
2014/12/30 职场文书
病危通知单
2015/04/17 职场文书
2015年国庆节寄语
2015/08/17 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python