PHP 7.4 устарел: что делать и как перейти на PHP 8
Трое песочных часов на изометрической подложке, песок внизу, из средних падает последний зелёный шарик

PHP 7.4 устарел: что делать и как перейти на PHP 8

PHP 7.4 без патчей безопасности с ноября 2022. Что делать: проверить код и плагины, протестировать и перейти на PHP 8.2–8.4.

PHP 7.4 устарел: что делать владельцу сайта и разработчику

Если ваш сайт работает на PHP 7.4, его нужно обновить до поддерживаемой ветки, лучше PHP 8.2–8.4: сделайте резервную копию, проверьте код и плагины на совместимость, протестируйте на копии сайта и только затем переключите версию на хостинге.

PHP 7.4 не получает даже патчей безопасности с ноября 2022 года. Каждая новая найденная уязвимость остаётся открытой.

Паниковать не нужно, но откладывать тоже не стоит. Ниже разберём, что именно означает «устарел», чем это грозит бизнесу, какую версию выбрать и как пройти миграцию по шагам, чтобы сайт не лёг посреди рабочего дня.

Что на самом деле означает «PHP 7.4 устарел»

У каждой ветки PHP есть жизненный цикл из двух этапов. Сначала идёт активная поддержка: разработчики исправляют ошибки и закрывают уязвимости. Затем наступает период только безопасности, когда выходят лишь критические патчи. После этого ветка получает статус EOL (end of life): никаких обновлений нет вообще.

У PHP 7.4, выпущенной в ноябре 2019 года, активная поддержка закончилась в ноябре 2021-го, а исправления безопасности прекратились в ноябре 2022-го. Это значит, что любая уязвимость, обнаруженная в ядре или стандартных расширениях после этой даты, в 7.4 официально не исправляется.

Важный нюанс: устаревшая версия не «ломается» в один день. Сайт продолжает открываться, формы отправляются, заказы приходят. Именно поэтому проблему так часто откладывают, пока не случится взлом или хостер не отключит старую версию.

жизненный цикл php 7.4
01
ноябрь 2019
Выход PHP 7.4
Типизированные свойства, стрелочные функции, preloading.
02
ноябрь 2021
Конец активной поддержки
Обычные баги больше не исправляются.
03
ноябрь 2022
Конец патчей безопасности
Статус EOL: версия полностью снята с поддержки.
04
сегодня
Риск растёт каждый месяц
Известные уязвимости остаются открытыми, а библиотеки отказываются от 7.4.

Чем грозит работа на устаревшей версии

Главный риск — безопасность. Уязвимости в PHP, как правило, публикуются открыто, и автоматические сканеры ботов проверяют сайты на известные дыры массово. Сайт на EOL-версии оказывается в зоне повышенного риска: взлом, внедрение вредоносного кода, рассылка спама с вашего домена, утечка клиентской базы.

Второй риск — совместимость. Современные версии WordPress, Laravel, Symfony, популярные плагины и пакеты Composer поднимают минимальную требуемую версию PHP. Рано или поздно вы не сможете поставить обновление безопасности для самой CMS, потому что оно потребует PHP 8.

Третий риск — последствия для поиска. Если сайт взломан, Яндекс Вебмастер и Google Search Console могут показать предупреждение о вредоносном коде, а в выдаче появится пометка об опасности. Трафик из Яндекса и Google при этом падает быстро, а восстановление занимает недели.

Что вы получите после перехода на PHP 8

  1. 01

    Актуальные патчи безопасности и спокойствие за данные клиентов и заказы

  2. 02

    Рост производительности: в ряде тестов PHP 8 заметно быстрее 7.4, а значит, быстрее ответ сервера и ниже нагрузка на хостинг

  3. 03

    Доступ к свежим версиям CMS, фреймворков и библиотек без конфликтов по требованиям

  4. 04

    Современный синтаксис: именованные аргументы, union-типы, match, nullsafe-оператор, атрибуты

  5. 05

    Более строгая типизация и понятные ошибки, которые помогают находить баги до продакшена

  6. 06

    Совместимость с будущими версиями хостинга: старые ветки провайдеры отключают в первую очередь

Какую версию PHP выбрать вместо 7.4

Логично сразу целиться в ветку, у которой впереди как можно больше лет поддержки, но не в самую свежую, если вы используете много сторонних плагинов. Они могут не успеть добавить совместимость с последним релизом.

Для большинства коммерческих сайтов золотая середина сегодня — PHP 8.2 или 8.3. Для нового проекта и современного кода на фреймворках подойдёт PHP 8.4. Версии 8.0 и 8.1 разумно рассматривать только как промежуточный шаг при поэтапной миграции, так как их сроки поддержки закончились или заканчиваются.

Актуальный график всегда публикуется на официальном сайте php.net, поэтому перед принятием решения сверьтесь с ним: даты могут уточняться.

ВерсияВыпускПатчи безопасности доРекомендация
PHP 7.4ноябрь 2019ноябрь 2022Снята с поддержки, нужно уходить
PHP 8.0ноябрь 2020ноябрь 2023Снята с поддержки
PHP 8.1ноябрь 2021декабрь 2025Только как промежуточный этап
PHP 8.2декабрь 2022декабрь 2026Рабочий вариант для миграции
PHP 8.3ноябрь 2023декабрь 2027Оптимальный выбор для большинства сайтов
PHP 8.4ноябрь 2024декабрь 2028Для новых проектов и свежих библиотек

Подготовка: сначала аудит, потом переключатель

Самая частая ошибка — зайти в панель хостинга, выбрать в списке PHP 8.3 и надеяться на лучшее. Так можно получить белый экран на всём сайте. Миграция должна начинаться с инвентаризации: какая версия PHP стоит сейчас, какие расширения подключены, какая CMS и какие плагины используются, есть ли самописный код.

Узнать версию можно командой php -v в консоли или через phpinfo(). Для проектов на Composer полезны команды composer check-platform-reqs и composer why-not php 8.3: они покажут, какие пакеты мешают переходу. Для сайтов на CMS проверьте в описании каждого плагина и темы заявленную поддержку PHP 8.x и дату последнего обновления. Заброшенный плагин, который не обновлялся несколько лет, почти всегда становится главной проблемой.

Пошаговый план миграции с PHP 7.4 на PHP 8

  1. 01

    Сделайте полную резервную копию файлов и базы данных и убедитесь, что её можно развернуть. Без проверенного бэкапа дальнейшие шаги выполнять нельзя.

  2. 02

    Разверните копию сайта (staging) на отдельном поддомене или локально с нужной версией PHP. Закройте её от индексации в Яндексе и Google через пароль или директиву noindex.

  3. 03

    Обновите CMS, плагины, темы и зависимости Composer до версий, совместимых с PHP 8. Заменяйте или удаляйте плагины, у которых нет поддержки.

  4. 04

    Запустите статический анализ: PHPStan или Psalm, проверку совместимости через PHP_CodeSniffer с набором PHPCompatibility. Для автоматических правок кода пригодится Rector.

  5. 05

    Включите отображение всех ошибок на staging (error_reporting = E_ALL) и пройдите ключевые сценарии: регистрация, корзина, оплата, формы, личный кабинет, админка, крон-задачи. Если есть автотесты, запустите их.

  6. 06

    Исправьте найденные Warning, Deprecated и фатальные ошибки. При большом объёме кода поднимайтесь поэтапно: 7.4 → 8.0 → 8.1 → целевая версия.

  7. 07

    Выберите время с минимальной посещаемостью (по данным Яндекс Метрики или Google Analytics) и переключите версию PHP в панели хостинга или в конфигурации сервера.

  8. 08

    Первые 24–72 часа наблюдайте за логами ошибок, скоростью ответа и конверсиями. Держите наготове возможность быстро вернуться на прежнюю версию, если что-то критичное всплывёт.

Что чаще всего ломается при переходе на PHP 8

Переход с 7.4 на 8.0 — самый «болезненный», потому что именно в нём изменено больше всего поведения языка. Часть notice превратилась в warning, многие функции стали выбрасывать исключение TypeError при неверных типах аргументов, а сравнение строк с числами стало более логичным и строгим.

Удалены или изменены устаревшие конструкции: функция create_function и each больше не существуют, обращение к символу строки через фигурные скобки удалено, оператор @ больше не скрывает фатальные ошибки. В PHP 8.1 и 8.2 добавились новые предупреждения об устаревании, например о динамических свойствах классов в 8.2. Они не ломают сайт сразу, но засоряют логи и подсказывают, что код нужно привести в порядок.

Ниже — наглядный пример того, как меняется поведение одного и того же кода.

изменение поведения: было и стало
php 7.4
Мягкое поведение
0 == 'abc' // true
echo $undefined; // Notice
strlen([]); // Warning, вернёт null
Ошибки в данных молча проходят дальше и приводят к трудноуловимым багам.
php 8.x
Строгое поведение
0 == 'abc' // false
echo $undefined; // Warning
strlen([]); // TypeError
Проблемы вскрываются сразу, но старый код без правок может выдать ошибку.

Как действовать грамотно

Не пытайтесь победить все предупреждения одним махом. Сначала устраните фатальные ошибки и TypeError, потому что они ломают работу сайта. Затем разберитесь с Warning, которые влияют на логику. Предупреждения Deprecated можно планово убирать в следующем спринте.

Если код писали давно и не документировали, оцените объём работ заранее: прогон PHPStan на среднем уровне строгости уже даёт ясную картину, сколько мест требует правок.

Частые ошибки при обновлении PHP

Большинство инцидентов при миграции связаны не с самим PHP, а с подготовкой и спешкой.

Как делают неправильно

  • Переключают версию на боевом сайте без резервной копии и тестовой среды
  • Не проверяют плагины и темы, надеясь, что «и так заработает»
  • Оставляют display_errors включённым на продакшене и показывают ошибки посетителям
  • Игнорируют крон-задачи, выгрузки и интеграции, которые используются редко
  • Откладывают проблему, пока хостер не отключит PHP 7.4 без предупреждения

Как правильно

  1. 01

    Всегда сначала делайте бэкап и проверяйте тесты на staging-копии

  2. 02

    Составьте список всех плагинов, пакетов и расширений с их совместимостью

  3. 03

    Логируйте ошибки в файл, а на продакшене скрывайте их от посетителей

  4. 04

    Проверьте фоновые процессы: обмен с 1С, CRM, платёжными системами и почтой

  5. 05

    Запланируйте миграцию заранее и закрепите ответственного за неё

Если обновиться прямо сейчас невозможно

Бывает, что проект завязан на старую CMS или самописный код, который переписывать долго и дорого. В таком случае есть временные меры, но важно понимать: это отсрочка, а не решение.

Некоторые дистрибутивы Linux выпускают собственные исправления для своих пакетов PHP 7.4, а ряд компаний предлагает коммерческую расширенную поддержку устаревших веток, например TuxCare и Zend. Дополнительно стоит закрыть сайт веб-application firewall, ограничить доступ к админке по IP, регулярно делать бэкапы и отслеживать целостность файлов.

Параллельно составьте план миграции с конкретными сроками. Чем дольше проект живёт на старой версии, тем больше накапливается «технический долг» и тем дороже обходится итоговый переход.

чек-лист перед переключением версии
Бэкап сделан и проверенФайлы и база разворачиваются на отдельной копии.
Зависимости обновленыCMS, плагины и пакеты Composer поддерживают PHP 8.
Статический анализ пройденPHPStan и PHPCompatibility не показывают критичных ошибок.
Сценарии протестированыЗаказ, оплата, формы, админка и крон работают на staging.
Расширения PHP на местеmbstring, curl, gd, intl и другие подключены для новой версии.
План отката готовИзвестно, как вернуть прежнюю версию за несколько минут.
После переключения версии PHP проверьте сайт в Яндекс Вебмастере и Google Search Console: нет ли роста ошибок сервера (5xx) и проблем с доступностью страниц. Заодно сравните скорость загрузки в Яндекс Метрике и Google Analytics до и после миграции.

Итог: не откладывайте обновление PHP

PHP 7.4 давно снят с поддержки, и самый безопасный путь — спланированная миграция на PHP 8.2–8.4.
  1. 01

    Версия 7.4 не получает патчей безопасности с ноября 2022 года

  2. 02

    Оптимальные цели миграции: PHP 8.2, 8.3 или 8.4

  3. 03

    Начинайте с бэкапа, аудита зависимостей и тестовой копии сайта

  4. 04

    Используйте PHPStan, PHPCompatibility и Rector для поиска проблем в коде

  5. 05

    Переключайте версию в период низкой нагрузки и следите за логами

  6. 06

    Если обновиться нельзя сразу, закройте риски временными мерами и зафиксируйте сроки миграции

Чем раньше вы переведёте сайт на актуальную версию PHP, тем дешевле и спокойнее пройдёт миграция. Если нужна помощь с аудитом совместимости, тестированием и безопасным переключением, доверьте это специалистам.

Часто задаваемые вопросы

Перенесём ваш сайт с PHP 7.4 на современную версию без простоев

Проведём аудит совместимости, протестируем на копии и безопасно переключим боевой сайт.

Бесплатный аудит совместимостиТест на stagingОткат за минуты

Миграция на PHP 8 без потери данных

Политика конфиденциальности

При оставлении заявки на ресурсе «https://gurucontext.ru» пользователи предоставляют следующие сведения:

  • Имя
  • Контактный телефон или Telegram
  • Адрес сайта пользователя (не обязательно)

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

Использование информации

Вся полученная информация используется администрацией «https://gurucontext.ru» исключительно в целях связи с клиентом.

Защита персональных данных

Компания «https://gurucontext.ru» обязуется не разглашать сведения, полученные от пользователей, и хранит их в защищённом виде.

Предоставление данных третьим лицам

Полученные сведения не передаются третьим лицам, за исключением случаев исполнения обязательств перед клиентом (с его разрешения) и обоснованных требований закона.

Контакты

Телефон: +7 (499) 955-47-00.
E-mail: info@gurucontext.ru.