Ubuntu中支持PHP5和PHP7双版本其实很简单

举报
feichaiyu 发表于 2019/10/14 22:35:57 2019/10/14
【摘要】 最近在编写一个工具的时候,使用了PHP命名空间特性,在命名空间中如果想引用常量、函数,需要PHP5.6以上的版本,但我阿里云 ECS 上安装的版本是PHP 5.5.9,由于 ECS 部署了很多PHP代码,如果贸然升级高版本PHP,可能会存在一些兼容性的问题。突然奇想,在同一个操作系统中,是否能够同时支持两个版本的PHP呢?简单查阅了相关资料,其实在 Ubuntu 中使用包安装方式支持PHP双...

最近在编写一个工具的时候,使用了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 版本,可以使用下列的命令确认:

屏幕快照 2019-10-14 下午10.26.18.png

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

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

屏幕快照 2019-10-14 下午10.26.27.png

简单理解下 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 的源,运行如下命令:

屏幕快照 2019-10-14 下午10.26.51.png

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

2:更新系统

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

屏幕快照 2019-10-14 下午10.27.05.png

3:安装PHP7.1

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

屏幕快照 2019-10-14 下午10.27.13.png

关键输出如下:

屏幕快照 2019-10-14 下午10.27.22.png

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

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

屏幕快照 2019-10-14 下午10.27.32.png

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

屏幕快照 2019-10-14 下午10.27.44.png

3:观察安装后的文件

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

屏幕快照 2019-10-14 下午10.28.01.png

关键输出如下:

屏幕快照 2019-10-14 下午10.28.11.png

可以看出,你可以运行一个 PHP7 版本的 FPM 服务,和 /etc/php5/fpm/php-fpm.conf 使用的配置文件是互相隔离的。

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

屏幕快照 2019-10-14 下午10.28.23.png

关键输出如下:

屏幕快照 2019-10-14 下午10.28.31.png

4:如何切换两个PHP版本

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

屏幕快照 2019-10-14 下午10.28.41.png

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

屏幕快照 2019-10-14 下午10.28.51.png

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

屏幕快照 2019-10-14 下午10.28.58.png

关注我的 g z h(ID:yudadanwx,虞大胆的叽叽喳喳)。



本文转载自异步社区。

文链接:https://www.epubit.com/articleDetails?id=Nb9f03829-852f-4a62-acbe-8f20b3ece0b4


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。