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

PHP 8.3 и 8.4 на сервере: что нового и когда обновляться

PHP · 29.09.2026

PHP 8.3 вышел в конце 2023 года, PHP 8.4 — годом позже. Обе версии уже доступны на большинстве серверов с cPanel и ISPmanager 6, но многие проекты до сих пор работают на PHP 8.1 просто по инерции. Разберём, что изменилось на практике и стоит ли переходить прямо сейчас.

Что нового в PHP 8.3 и PHP 8.4

PHP 8.3 добавил типизированные константы классов, атрибут #[Override] для контроля переопределения методов и функцию json_validate(), которая проверяет корректность JSON без разбора всей структуры в память. Это заметно ускоряет валидацию входящих запросов API.

PHP 8.4 пошёл дальше: появились property hooks (геттеры и сеттеры прямо в объявлении свойства), асимметричная видимость (public readonly можно сделать публичным на чтение и приватным на запись отдельно) и новые функции для массивов — array_find(), array_any(), array_all(). Подробнее о строгой типизации, которая хорошо сочетается с этими нововведениями, — в статье про strict_types на проде.

Как работают property hooks на практике

Раньше для валидации значения при записи в свойство нужен был отдельный метод-сеттер. Property hooks убирают эту прослойку:

class Product {
    public int $price {
        set {
            if ($value < 0) {
                throw new InvalidArgumentException('Цена не может быть отрицательной');
            }
            $this->price = $value;
        }
    }
}

Код становится короче, а IDE и статические анализаторы видят реальный тип свойства, а не догадываются по докблокам.

Сроки поддержки версий PHP

Каждая версия PHP получает два года активной поддержки с исправлением багов и ещё один год — только security-патчи. Дальше версия считается устаревшей и обновления прекращаются.

ВерсияАктивная поддержкаSecurity-фиксыСтатус на сервере
PHP 8.1завершеназаканчиваетсяпора планировать переход
PHP 8.2завершаетсяидётещё безопасно
PHP 8.3идётне началасьрекомендуется
PHP 8.4идётне началасьдля новых проектов

На что обратить внимание при переходе

Часть изменений в 8.3 и 8.4 ломает старый код, если он полагался на нестрогое поведение PHP. Перед обновлением проверьте:

  • Неявные nullable-типы в сигнатурах функций — в PHP 8.4 такие объявления считаются устаревшими и требуют явного ?type.
  • Динамические свойства классов без атрибута #[AllowDynamicProperties] — они запрещены ещё с PHP 8.2.
  • Расширения из pecl, которые не обновлялись больше двух лет — часть из них ломается на новом Zend Engine.
  • Библиотеки Composer с жёстко указанной верхней границей PHP в composer.json — их придётся обновить или заменить.

Как проверить и переключить версию PHP на сервере

На Ubuntu и Debian версии PHP переключаются через update-alternatives, а для сайтов под Nginx и PHP-FPM — через пул в конфиге виртуального хоста. Сначала поставьте нужную версию рядом со старой, не удаляя её:

php -v
sudo apt install php8.4 php8.4-fpm php8.4-mysql php8.4-mbstring
sudo update-alternatives --set php /usr/bin/php8.4
sudo systemctl restart php8.4-fpm

Как держать несколько версий одновременно и переключать их per-vhost — описано в статье про несколько версий PHP на одном сервере. Список нужных расширений для конкретного фреймворка проще собрать по инструкции про установку расширений PHP.

Стоит ли обновляться: чек-лист

Обновление версии PHP — это не разовая кнопка, а проверка совместимости. Порядок действий такой:

  1. Разверните копию проекта на staging с новой версией PHP и прогоните тесты или хотя бы основные сценарии вручную.
  2. Выполните composer install и убедитесь, что все зависимости поддерживают выбранную версию без предупреждений о совместимости.
  3. Переключите PHP-FPM на новую версию и включите JIT в OPcache — прирост скорости на CPU-интенсивных задачах заметен уже на первых запросах.
← Назад в базу знаний Задать вопрос поддержке