До основного вмісту

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-інтенсивних задачах помітний вже на перших запитах.
← Назад до бази знань Поставити питання підтримці