Короткий ответ: сначала проверьте текущую версию 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. Для соседних задач пригодятся эти разборы:
- Composer в PHP: установка пакетов без ручного копирования
- PHP и MySQL через PDO: первая база без SQL-инъекций
- PHP-чат своими руками: простой учебный пример без фреймворка
- Timeweb: как изменить версию PHP на хостинге и проверить сайт



