我有一台关键任务生产 CentOS 服务器,运行来自 remi repo 的 PHP7.1。我需要将 PHP 降级到 7.0。如何安全地执行此操作(使用哪些命令)且不停机?以下是一些输出,以提供一些上下文。
# yum info php
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.linux.duke.edu
* epel: fedora-epel.mirrors.tds.net
* extras: mirror.linux.duke.edu
* remi-php71: remi.mirror.wearetriple.com
* remi-safe: remi.mirror.wearetriple.com
* updates: mirror.es.its.nyu.edu
Installed Packages
Name : php
Arch : x86_64
Version : 7.1.12
Release : 4.el7.remi
Size : 9.4 M
Repo : installed
From repo : remi-php71
Summary : PHP scripting language for creating dynamic web sites
我最初升级到 PHP7.1 的方式是通过为 PHP 启用 remi php7.1 repo,因此现在仅打印php
包的信息会显示如上所示的 php7.1 包信息。我需要的是yum info php
返回可以在 remi 的php70
包中找到的 php 7.0 包:
# yum info php70
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.linux.duke.edu
* epel: fedora-epel.mirrors.tds.net
* extras: mirror.linux.duke.edu
* remi-php71: remi.mirror.wearetriple.com
* remi-safe: remi.mirror.wearetriple.com
* updates: mirror.es.its.nyu.edu
Available Packages
Name : php70
Arch : x86_64
Version : 1.0
Release : 5.el7.remi
Size : 2.9 k
Repo : remi-safe
Summary : Package that installs PHP 7.0
License : GPLv2+
Description : This is the main package for php70 Software Collection,
: that install PHP 7.0 language.
什么命令可以实现这一点并用 php7.0 替换 php7.1?
答案1
你应该能够使用 来实现这一点yum downgrade
。你的情况的命令应该是这样的
yum downgrade php
这将为您提供 yum 将执行的操作以及继续的选项。您可能需要执行
yum --disablerepo remi-php71 downgrade php
如果第一个命令没有显示降级路径。
与往常一样,在生产机器上执行此操作之前请先进行测试。
答案2
您可以尝试使用命令检查 yum 历史记录yum history
。如果您发现安装 PHP7.1 而不是 PHP7.0 的步骤,则可以通过 将其恢复yum history undo <Step ID>
。
答案3
这应该可以降级使用 remi-repo 安装的大多数 PHP 版本。
您可能已经在 etc/yum.repos.d/ 中拥有 remi-php71.repo 和 remi-php70.repo,如果您没有要降级到的版本的 repo 文件,请确保先安装该文件。
通过编辑该版本的文件(remi-php71.repo)并更改enabled=1
为来禁用当前版本enabled=0
enabled=0
通过编辑该版本的文件(remi-php70.repo)并将第一个更改为来启用您想要降级到的版本enabled=1
(注意:仅第一个,不要意外启用 debuginfo 或 test 下的版本)
然后:
sudo yum downgrade php
你可能会收到很多这样的信息
Error: Package: php-7.x.remi.x86_64 (remi-php7x)
Requires: php-common(x86-64) = 7.x.el7.remi
根据该错误,您应该将 php-common 添加到您的命令中:
sudo yum downgrade php php-common
可能会返回额外的错误,其中包括需要包含在 yum downgrade 命令中的其他软件包。继续将它们添加到列表中。经过几次尝试后,yum 应该会很乐意真正执行降级。
检查是否成功:
php -version
如果您使用此功能,请不要忘记重新启动 php-fpm。