Как откатить версию PHP на CentOS без хаоса в пакетах

Короткий ответ: сначала проверьте текущую версию PHP и способ установки, сделайте backup конфигов и сайта, затем переключите пакетный модуль или репозиторий на нужную ветку PHP и переустановите пакеты. Не удаляйте PHP вручную из /usr/bin и не смешивайте разные репозитории без проверки

Откат PHP — рискованная операция. Она может сломать сайт, расширения, панель управления, Composer-зависимости и сервис php-fpm. Поэтому правильная цель — не “поставить старую версию любой ценой”, а вернуть совместимую версию контролируемо

Сначала проверьте систему

Выполните

cat /etc/os-release
php -v
which php
php -m

Проверьте, что используется: Apache module, PHP-FPM, панель управления, контейнер или системный PHP

systemctl status php-fpm
systemctl status httpd
systemctl status nginx

Если сайт работает через панель вроде ISPmanager, cPanel или Plesk, не меняйте PHP системными командами вслепую. Панель может управлять версиями PHP отдельно

Сделайте backup

Минимум перед откатом

sudo cp -a /etc/php.ini /etc/php.ini.backup
sudo cp -a /etc/php.d /etc/php.d.backup
sudo cp -a /etc/php-fpm.d /etc/php-fpm.d.backup 2>/dev/null

Также сохраните файлы сайта и базу данных. Если используется WordPress, Laravel, Bitrix или Joomla, проверьте требования проекта к версии PHP

Если используется dnf module

На RHEL-подобных системах с модульными потоками можно посмотреть доступные PHP-модули

dnf module list php

Чтобы переключиться на другую ветку, обычно делают reset и enable нужного потока

sudo dnf module reset php
sudo dnf module enable php:8.1
sudo dnf distro-sync

После этого проверьте

php -v

Команды зависят от конкретной версии CentOS, CentOS Stream, AlmaLinux или Rocky Linux. Если нужного потока нет, часто используют репозиторий Remi

Если используется Remi

Remi — популярный репозиторий для PHP на RHEL-подобных системах. Сначала посмотрите, какие пакеты PHP установлены

rpm -qa | grep php

Проверьте активные репозитории

dnf repolist

Для переключения версии через Remi обычно используют модульный поток или отдельный репозиторий нужной версии. Логика такая: выключить текущую ветку, включить нужную, затем синхронизировать пакеты

Примерный сценарий для dnf-модулей

sudo dnf module reset php
sudo dnf module enable php:remi-8.1
sudo dnf distro-sync

Перед применением команд проверьте актуальные инструкции Remi для вашей системы. Там важно совпадение версии ОС и нужной ветки PHP

Если используется yum на старом CentOS

На старых системах без модулей логика может быть другой: отключение одного репозитория и установка пакетов из другого. Например, нужно проверить, откуда установлен PHP

yum list installed | grep php
yum repolist

Затем уже решать, какие пакеты удалить или заменить. Простое yum downgrade php может не сработать, если в репозитории нет нужной старой версии или расширения собраны под другую ветку

Для старых CentOS особенно важно помнить про окончание поддержки. Если система давно не получает обновления, безопаснее планировать миграцию на поддерживаемую ОС, а не бесконечно чинить старую ветку PHP

Перезапустите сервисы

После переключения версии

php -v
sudo systemctl restart php-fpm
sudo systemctl restart httpd
sudo systemctl restart nginx

Перезапускайте только те сервисы, которые реально используются. Если у вас Apache без Nginx, Nginx перезапускать не нужно

Проверьте логи

sudo journalctl -u php-fpm -n 100 --no-pager
sudo journalctl -u httpd -n 100 --no-pager

Проверьте сайт после отката

Создайте временный файл phpinfo.php в тестовой директории

<?php
phpinfo();

Откройте его в браузере и проверьте версию PHP, но не оставляйте этот файл публично. После проверки удалите его

Также проверьте расширения

php -m

Если сайт использует MySQL, mbstring, gd, intl, xml, curl или zip, убедитесь, что они установлены для новой ветки PHP

Мини-практика

На тестовом сервере зафиксируйте текущую версию php -v, список пакетов rpm -qa | grep php и активные репозитории. Затем переключите PHP на другую поддерживаемую ветку и верните обратно. Цель упражнения — увидеть, что откат PHP состоит не из одной команды, а из контроля пакетов, расширений и сервисов

На боевом сервере так тренироваться не стоит

Частые ошибки

Удаляют PHP вручную Не удаляйте бинарники и конфиги руками. Используйте пакетный менеджер, иначе получите сломанные зависимости

Откатывают только php-cli Команда php -v проверяет CLI. Сайт может работать через php-fpm другой версии. Проверьте веб-окружение отдельно

Забывают про расширения После смены версии часто нужно поставить php-mysqlnd, php-mbstring, php-xml, php-gd, php-intl и другие расширения под новую ветку

Не смотрят требования сайта Старая версия PHP может быть нужна одному плагину, но ломать другой код. Проверьте требования CMS и фреймворка

Что почитать дальше по PHP

Если нужен общий маршрут по теме, откройте рубрику PHP. Для соседних задач пригодятся эти разборы:

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x