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 相关文章推荐
定制404错误页面,并发信给管理员的程序
Oct 09 PHP
php session应用实例 登录验证
Mar 16 PHP
php array的学习笔记
May 16 PHP
php之Memcache学习笔记
Jun 17 PHP
php实现在线生成条形码示例分享(条形码生成器)
Dec 30 PHP
Yii2框架使用计划任务的方法
May 25 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
利用ajax和PHP实现简单的流程管理
Mar 23 PHP
php实现文件预览功能
May 23 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 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判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
PHP Swoole异步读取、写入文件操作示例
2019/10/24 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
JavaScript操作选择对象的简单实例
2016/05/16 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
ElementUI之Message功能拓展详解
2019/10/18 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
Python pickle模块用法实例
2015/04/14 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
用python实现刷点击率的示例代码
2019/02/21 Python
Python3实现的旋转矩阵图像算法示例
2019/04/03 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
美国帽子俱乐部商店:Hat Club
2019/07/05 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
家长写给老师的建议书
2014/03/13 职场文书
党风廉政承诺书
2014/03/27 职场文书
妈妈活动方案
2014/08/15 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
离婚律师函范本
2015/05/27 职场文书
无工作证明怎么写
2015/06/15 职场文书
同学联谊会邀请函
2019/06/24 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python