Коротко
На Ubuntu и Debian исправление ставится обычным обновлением пакетов: apt update && apt upgrade, затем перезапуск PHP-FPM. Номер версии при этом не изменится — проверять нужно журнал изменений пакета. Вся процедура занимает около двух минут и не требует перезагрузки сервера.
Шаг 1. Посмотреть, что установлено
dpkg -l | grep -E 'php[0-9.]+-(fpm|cli|common)'
php -vЗапомните номер версии пакета — по нему вы убедитесь, что обновление прошло.
Шаг 2. Обновить пакеты
sudo apt update
sudo apt install --only-upgrade 'php8.*'Если PHP ставился из стороннего репозитория (ppa:ondrej/php на Ubuntu, packages.sury.org на Debian), сначала обновите список пакетов этого репозитория — исправления туда приходят отдельно от основного.
Шаг 3. Перезапустить PHP-FPM
Это обязательный шаг. Рабочие процессы PHP-FPM держат в памяти старый код: пока их не перезапустить, сервер остаётся уязвимым, хотя файлы на диске уже новые.
sudo systemctl restart php8.3-fpm
systemctl status php8.3-fpm --no-pagerПодставьте свою версию вместо 8.3. Если у вас несколько версий PHP, перезапустите каждую:
systemctl list-units 'php*-fpm*' --no-legend | awk '{print $1}' | xargs -r sudo systemctl restartПри использовании mod_php вместо FPM перезапускается веб-сервер: sudo systemctl restart apache2.
Шаг 4. Проверить результат
zgrep -m1 'CVE-2026-109618' /usr/share/doc/php8.3-fpm/changelog.Debian.gz
dpkg -l | grep php8.3-fpmПервая команда должна вывести строку с номером уязвимости. Для Ubuntu 24.04 исправленная версия пакета — 8.3.6-0ubuntu0.24.04.13 или новее.
Почему номер версии не изменился
Ubuntu и Debian поддерживают одну версию PHP на весь срок выпуска системы и переносят в неё исправления безопасности из новых версий. Это называется бэкпортом. Поэтому php -v на исправленном сервере по-прежнему показывает 8.3.6, хотя уязвимости закрыты. Единственный надёжный признак — версия пакета и его журнал изменений.
Если PHP собран вручную
Собранный из исходников PHP обновлений не получает. Скачайте 8.3.36 (или 8.4.27, 8.5.12 для своих веток) с php.net, соберите с теми же параметрами, что и прежде — посмотреть их можно командой php -i | grep "Configure Command" — и перезапустите службы.
Частые вопросы
Нужна ли перезагрузка сервера?
Нет, достаточно перезапустить PHP-FPM и веб-сервер.
Что будет с сайтами во время обновления?
Перезапуск PHP-FPM занимает доли секунды. Запросы в этот момент могут получить ошибку 502, поэтому на нагруженных площадках используйте systemctl reload там, где он поддерживается, или выводите сервер из балансировки на время перезапуска.
Как обновить сразу много серверов?
Соберите список версий одной командой по SSH и обновляйте пачкой — пример скрипта есть в нашей статье про аудит парка серверов.