Назад | Перейти на главную страницу

Как безопасно понизить версию PHP (с 7.1 до 7.0) на CentOS

У меня есть критически важный производственный сервер CentOS, на котором работает PHP7.1 из репозитория remi. Мне нужно понизить версию 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, включив репозиторий remi php7.1 для PHP, поэтому теперь выводит информацию только для php package показывает информацию о пакете php7.1, как показано выше. Что мне нужно для yum info php чтобы вернуть пакет php 7.0, который можно найти в remi php70 пакет:

# 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.1 на php7.0?

Вы должны добиться этого с помощью yum downgrade. Команда в вашем случае должна быть примерно такой:

yum downgrade php

который предоставит вам действия, которые будет выполнять yum, и возможность продолжить. Возможно, вам придется сделать

yum --disablerepo remi-php71 downgrade php

если первая команда не показывает путь к более ранней версии.

Как всегда, проверьте это, прежде чем делать это на производственной машине.

Это должно работать, чтобы понизить большинство версий PHP, установленных с помощью remi-repo.

Вероятно, у вас уже есть remi-php71.repo и remi-php70.repo в etc / yum.repos.d /. Если у вас нет файла репо для версии, до которой вы хотите перейти на более раннюю версию, обязательно сначала установите его.

Отключите текущую версию, отредактировав файл для этой версии (remi-php71.repo) и изменив enabled=1 к enabled=0

Включите версию, до которой вы хотите перейти, отредактировав файл для этой версии (remi-php70.repo) и изменив первый enabled=0 к 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, если вы его используете.

Вы можете попробовать проверить историю yum с помощью yum history команда. Если вы найдете шаг, на котором вы устанавливаете PHP7.1 вместо PHP7.0, вы можете вернуть его, yum history undo <Step ID>.