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中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
php和javascript之间变量的传递实现代码
Dec 19 PHP
深入Nginx + PHP 缓存详解
Jul 11 PHP
php根据分类合并数组的方法实例详解
Nov 06 PHP
php实现下载限制速度示例分享
Feb 13 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
Sep 28 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
php清除和销毁session的方法分析
Mar 19 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
PHP面向对象程序设计实例分析
Jan 26 PHP
实例讲解php实现多线程
Jan 27 PHP
详解php命令注入攻击
Apr 06 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 定界符格式引起的错误
2011/05/24 PHP
PHP按行读取、处理较大CSV文件的代码实例
2014/04/09 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
jquery实现简单合拢与展开网页面板的方法
2015/09/01 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
2018/07/13 Javascript
node中的session的具体使用
2018/09/14 Javascript
用Object.prototype.toString.call(obj)检测对象类型原因分析
2018/10/11 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
JSON stringify方法原理及实例解析
2020/10/23 Javascript
django+js+ajax实现刷新页面的方法
2017/05/22 Python
python实现爬山算法的思路详解
2019/04/09 Python
python实现简易淘宝购物
2019/11/22 Python
浅谈Python中threading join和setDaemon用法及区别说明
2020/05/02 Python
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
J2EE面试题大全
2016/08/06 面试题
女大学生毕业找工作的自我评价
2013/10/03 职场文书
酒店司机岗位职责
2013/12/14 职场文书
实习自我鉴定
2013/12/15 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
《三峡》教学反思
2014/03/01 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书