К основному содержимому

Как обновить PHP на AlmaLinux, Rocky и RHEL после PHP2Shell

PHP · 27.10.2026 · 2 мин чтения

Коротко

На AlmaLinux, Rocky Linux и RHEL исправление ставится командой dnf update php* с последующим перезапуском php-fpm. Если PHP установлен из репозитория Remi, обновлять нужно его модуль. Проверять результат следует по журналу изменений пакета, а не по выводу php -v.

Шаг 1. Определить, откуда установлен PHP

rpm -q php-fpm php-cli
dnf module list php --enabled

Если в названии пакета встречается remi, PHP пришёл из репозитория Remi. Если модуль включён как php:8.3, используется поток модулей самого дистрибутива.

Шаг 2. Обновление

Для пакетов дистрибутива:

sudo dnf clean all
sudo dnf update php php-fpm php-cli php-common

Для Remi удобнее обновить все пакеты PHP разом:

sudo dnf update 'php*'

Если вы переходите на новый поток модулей (например, с 8.2 на 8.3), сначала сбросьте текущий:

sudo dnf module reset php
sudo dnf module enable php:8.3
sudo dnf distro-sync 'php*'

Шаг 3. Перезапуск

sudo systemctl restart php-fpm
systemctl status php-fpm --no-pager

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

Шаг 4. Проверка

rpm -q --changelog php-cli | grep -m2 -E 'CVE-2026-109618|CVE-2026-109619'
rpm -q php-fpm

Если строки с номерами уязвимостей нашлись — исправление на месте.

Особенность SELinux

После обновления пакетов политика SELinux не меняется, но если вы правили пути к сокетам PHP-FPM вручную, проверьте, что служба поднялась без отказов:

sudo ausearch -m avc -ts recent | tail -20

Если PHP в контейнере или на панели

Обновление пакетов на хост-системе не трогает PHP внутри контейнеров: образ нужно пересобрать. Панели управления обновляют свои сборки PHP собственными средствами. Об этом — в отдельных статьях.

Частые вопросы

Почему dnf говорит, что обновлений нет?

Вероятно, кэш метаданных устарел. Выполните sudo dnf clean all и повторите. Если репозиторий Remi отключён, пакеты оттуда обновляться не будут.

Нужно ли перезапускать nginx?

Нет, nginx общается с PHP-FPM через сокет и перезапуска не требует. Исключение — mod_php под Apache: там перезапускается httpd.

Можно ли обновиться без простоя?

Перезапуск php-fpm занимает доли секунды. На нагруженных площадках выводите сервер из балансировки или используйте systemctl reload php-fpm, если ваша сборка его поддерживает.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке