如何在Ubuntu中在多个PHP版本之间切换
有时,安装的软件包的最新版本可能无法按预期工作。
应用程序可能与更新的程序包不兼容,并且仅支持程序包的特定旧版本。
在这种情况下,我们可以立即将有问题的软件包降级到其较早的工作版本。
请参考我们的旧教程,了解如何在Ubuntu及其降级版本中降级软件包以及如何在Arch Linux及其派生版本中降级软件包。
但是,我们不必降级某些软件包。
我们可以同时使用多个版本。
例如,假设我们要在Ubuntu 18.04 LTS中部署的LAMP堆栈中测试PHP应用程序。
一段时间后,我们发现该应用程序在PHP 5.6中运行良好,但在PHP 7.2中运行不正常(Ubuntu 18.04 LTS默认情况下会安装PHP 7.x)。
我们要重新安装PHP还是重新安装整个LAMP堆栈?
不过没有必要。
我们甚至不必将PHP降级到其早期版本。
在这个简短的教程中,将介绍如何在Ubuntu 18.04 LTS中的多个PHP版本之间切换。
在多个PHP版本之间切换
要检查PHP的默认安装版本,请运行:
$php -v PHP 7.2.7-0ubuntu0.18.04.2 (cli) (built: May 4 2016 16:55:24) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.2.7-0ubuntu0.18.04.2, Copyright (c) 1999-2016, by Zend Technologies
如我们所见,PHP的安装版本为7.2.7.
在测试了几天的应用程序之后,我们发现应用程序不支持PHP 7.2.
在这种情况下,最好同时拥有PHP 5.x版本和PHP 7.x版本,以便我们可以随时轻松地在任何受支持的版本之间来回切换。
我们无需删除PHP 7.x或者重新安装LAMP堆栈。
我们可以同时使用PHP 5.x和7.x版本。
我假设我们尚未在系统中卸载php 5.6.
以防万一,我们已经删除了它,可以使用如下所示的PPA重新安装它。
我们可以从PPA安装PHP 5.6:
$sudo add-apt-repository -y ppa:ondrej/php $sudo apt update $sudo apt install php5.6
从PHP 7.x切换到PHP 5.x
首先使用以下命令禁用PHP 7.2模块:
$sudo a2dismod php7.2 Module php7.2 disabled. To activate the new configuration, you need to run: systemctl restart apache2
接下来,启用PHP 5.6模块:
$sudo a2enmod php5.6
将PHP 5.6设置为默认版本:
$sudo update-alternatives --set php /usr/bin/php5.6
或者,我们可以运行以下命令来设置默认情况下要使用的系统范围的PHP版本。
$sudo update-alternatives --config php
输入选择编号以将其设置为默认版本,或者直接按Enter保留当前选择。
如果我们已经安装了其他PHP扩展,请将它们也设置为默认值。
$sudo update-alternatives --set phar /usr/bin/phar5.6
最后,重新启动Apache Web服务器:
$sudo systemctl restart apache2
现在,检查PHP 5.6是否为默认版本:
$php -v PHP 5.6.37-1+ubuntu18.04.1+deb.sury.org+1 (cli) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
从PHP 5.x切换到PHP 7.x
同样,我们可以从PHP 5.x切换到PHP 7.x版本,如下所示。
$sudo a2enmod php7.2
$sudo a2dismod php5.6
$sudo update-alternatives --set php /usr/bin/php7.2
$sudo systemctl restart apache2