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

Перевод сайта на PHP 8: пошаговый план без простоев

Перевод сайта на PHP 8 безопасен, если сделать бэкап, проверить код на тестовой копии и обновить зависимости. Пошаговый план и список проблем.

Перевод сайта на PHP 8: как обновить версию и ничего не сломать

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

Главное правило: никогда не обновляйте PHP сразу на рабочем сайте. Сначала тестовая копия, потом боевая среда.

PHP 8 вышел в ноябре 2020 года и с тех пор получил несколько обновлений: 8.1, 8.2, 8.3 и 8.4. Старые ветки 7.x и 8.0 уже сняты с поддержки, то есть уязвимости в них не закрываются. Ниже разберём, зачем переходить, что ломается при обновлении, какими инструментами искать проблемы и как выстроить безопасный процесс.

Зачем вообще переходить на PHP 8

Самая приземлённая причина — безопасность. Версия PHP, снятая с поддержки, перестаёт получать исправления уязвимостей. Если на сайте есть формы, личный кабинет или оплата, использовать такую версию — прямой риск для данных клиентов и репутации.

Вторая причина — совместимость. Разработчики CMS, плагинов и библиотек постепенно отказываются от старых версий PHP. Рано или поздно вы не сможете поставить обновление модуля, потому что он требует PHP 8. Чем дольше откладывать переход, тем больше накопится изменений, и тем дороже станет миграция.

Третья причина — скорость и удобство разработки. В PHP 8 появился JIT-компилятор, а сам движок получил много оптимизаций. Прирост зависит от кода: для сайтов на популярных CMS он обычно заметен, но не бывает кратным, потому что основное время часто уходит на запросы к базе данных.

поддержка версий php

Какие ветки PHP ещё получают исправления

7.4
2022

Поддержка завершена в ноябре 2022 года. Уязвимости не закрываются.

8.0
2023

Поддержка завершена в ноябре 2023 года. Подходит только как промежуточный шаг.

8.1
до конца 2025

Только исправления безопасности. Пора планировать переход выше.

8.2 / 8.3
2026 / 2027

Разумный выбор для большинства сайтов прямо сейчас.

Даты уточняйте на официальном сайте php.net: график поддержки публикуется там.

Что нового в PHP 8 для разработчика и владельца сайта

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

Среди заметных нововведений: именованные аргументы, объединённые типы, выражение match, оператор nullsafe, продвижение свойств в конструкторе, атрибуты и удобные функции str_contains, str_starts_with, str_ends_with. В следующих версиях добавились перечисления (enum), readonly-свойства и другие инструменты для чистого кода.

Что даёт переход на PHP 8

  1. 01

    Закрытые уязвимости: актуальные ветки получают исправления безопасности

  2. 02

    Рост производительности за счёт оптимизаций движка и JIT

  3. 03

    Совместимость с новыми версиями CMS, плагинов и библиотек Composer

  4. 04

    Более строгая типизация: ошибки находятся на этапе разработки, а не у клиентов

  5. 05

    Современный синтаксис, который упрощает поддержку и найм разработчиков

  6. 06

    Меньше технического долга: каждое следующее обновление проходит легче

Что может сломаться при обновлении

Основные проблемы при переводе сайта на PHP 8 связаны с тремя вещами: удалёнными функциями, изменением поведения языка и устаревшими библиотеками. Самописный код, написанный лет десять назад, и старые плагины рискуют больше всего.

Отдельно стоит упомянуть предупреждения deprecated. Они не ломают сайт сразу, но сигнализируют, что в следующих версиях функциональность исчезнет. Если оставить их без внимания, переход на 8.3 или 8.4 снова превратится в аврал.

Что изменилосьВерсияЧто делать
Удалены create_function() и each()8.0 (удалено)Заменить на анонимные функции и цикл foreach
Обращение к символу строки через $s{0}8.0 (удалено)Использовать квадратные скобки: $s[0]
Сравнение строки и числа: 0 == «abc» теперь false8.0 (изменено поведение)Применять строгое сравнение === и проверить условия
Передача null во встроенные функции для не-nullable параметров8.1 (deprecated)Приводить значения к нужному типу, проверять на null
Динамические свойства классов8.2 (deprecated)Объявить свойства явно или использовать #[AllowDynamicProperties]
Функции utf8_encode() и utf8_decode()8.2 (deprecated)Перейти на mb_convert_encoding()

Как найти проблемы до переключения

Искать несовместимости вручную в десятках тысяч строк кода бессмысленно. Для этого есть инструменты. Набор PHPCompatibility для phpcs сканирует проект и показывает конструкции, которые не работают в целевой версии. Статические анализаторы PHPStan и Psalm находят вызовы с неверными типами. Rector умеет автоматически переписывать устаревший код под новые версии.

Если проект работает на Composer, выполните команду composer why-not php 8.2: она покажет, какие пакеты мешают обновлению. Затем проверьте, есть ли у этих пакетов новые версии, а если нет — подберите замену.

Отдельное внимание уделите расширениям PHP. Убедитесь, что нужные модули (mysqli, gd, curl, mbstring, intl, imagick и другие) доступны для новой версии на вашем хостинге.

Пошаговый план перевода сайта на PHP 8

  1. 01

    Сделайте инвентаризацию: узнайте текущую версию PHP, версию CMS, список плагинов, тем, модулей и подключённых Composer-пакетов.

  2. 02

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

  3. 03

    Разверните тестовую копию сайта на отдельном поддомене или сервере с той же конфигурацией, но с целевой версией PHP. Закройте её от индексации в Яндексе и Google.

  4. 04

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

  5. 05

    Запустите статический анализ (PHPCompatibility, PHPStan, Rector) и исправьте найденные несовместимости.

  6. 06

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

  7. 07

    Выберите время с минимальным трафиком и переключите версию PHP в панели хостинга. Оставьте предыдущую версию доступной для быстрого отката.

  8. 08

    Следите за журналами ошибок, откликом сервера и отчётами Яндекс Вебмастера и Google Search Console в течение первых дней.

Тестовая копия — не формальность

Тестовая копия экономит больше всего нервов. Она должна быть максимально похожа на рабочий сайт: те же версии расширений, те же настройки веб-сервера, тот же объём данных. Если проверять на пустой базе, часть ошибок не проявится.

Не забудьте про фоновые процессы. Задания cron, обработчики очередей, выгрузки в маркетплейсы и интеграции с CRM часто работают с отдельным окружением и могут упасть уже после переключения, когда никто не смотрит на сайт. Запустите их на тестовой копии вручную и проверьте результат.

чек-лист перед переключением

Готов ли сайт к PHP 8

  • 01Есть свежий бэкап файлов и базы данных, проверено восстановление
  • 02Ядро CMS, плагины и темы обновлены до совместимых версий
  • 03Сканирование PHPCompatibility не показывает критичных ошибок
  • 04Нужные расширения PHP установлены для целевой версии
  • 05Формы, оплата, поиск и админка проверены на тестовой копии
  • 06Cron-задачи и интеграции с CRM отработали без ошибок
  • 07Известен способ отката и тот, кто будет его выполнять

Особенности популярных CMS

Если сайт работает на WordPress, Joomla, Drupal или 1С-Битрикс, актуальные версии этих систем поддерживают PHP 8.x. Главные риски создают не ядро, а сторонние плагины, темы и модули, которые давно не обновлялись. Перед переходом проверьте у каждого дополнения дату последнего релиза и заявленную совместимость.

Самые старые сборки, например OpenCart 3 или самописные движки без обновлений, часто плохо работают на PHP 8. В таком случае есть два пути: обновить систему до поддерживаемой версии или оставить старую версию PHP в изолированной среде и параллельно готовить миграцию. Второй вариант допустим лишь временно, потому что он оставляет сайт без обновлений безопасности.

Хостинг и серверное окружение

На большинстве виртуальных хостингов версию PHP меняют в панели управления (ISPmanager, cPanel, Plesk и аналогичных) в несколько кликов, причём её можно задать отдельно для каждого сайта. Это удобно: вы тестируете новую версию на поддомене и не трогаете основной сайт.

На VPS или выделенном сервере обычно устанавливают несколько версий PHP параллельно и переключают обработчик в конфигурации Nginx или Apache (php-fpm). Не забудьте перенести настройки php.ini: лимит памяти, время выполнения, параметры OPcache. Для новой версии они не копируются автоматически.

Проверьте и параметры OPcache. Он заметно ускоряет работу PHP, а JIT имеет смысл включать лишь после измерений: для типичных сайтов на CMS его эффект небольшой.

Частые ошибки при переходе на PHP 8

Большинство аварий случается не из-за самой версии, а из-за спешки и отсутствия плана отката.

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

  • Меняют версию PHP сразу на рабочем сайте в разгар рабочего дня
  • Не делают бэкап или не проверяют, что он восстанавливается
  • Оставляют на проде вывод ошибок для посетителей, раскрывая пути к файлам
  • Игнорируют предупреждения deprecated, откладывая проблему на потом

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

  1. 01

    Тестировать на копии, переключать в часы минимальной нагрузки

  2. 02

    Проверять восстановление из бэкапа заранее

  3. 03

    Писать ошибки в журнал, а на странице показывать только нейтральное сообщение

  4. 04

    Исправлять deprecated сразу, пока список короткий

Что проверить после переключения

Переключение — не финал. Первые сутки внимательно читайте журнал ошибок PHP и веб-сервера. Проверьте основные сценарии вручную: оформление заказа, отправку форм, вход в личный кабинет, работу поиска и фильтров, письма с сайта.

Дальше следите за поисковыми системами. В Яндекс Вебмастере и Google Search Console смотрите на ошибки сервера, доступность страниц и статус индексирования. Скорость отклика сравнивайте по данным Яндекс Метрики и Google Analytics: если время загрузки выросло, ищите причину в настройках OPcache или в тяжёлом плагине.

день переключения

Как выглядит безопасная смена версии

t-1 день
Финальный бэкап

Сохраняем файлы и базу, фиксируем текущие настройки php.ini.

t-0
Переключение

Меняем версию в панели хостинга в часы минимального трафика.

t+15 минут
Проверка сценариев

Проходим заказ, формы, вход, поиск и админку, смотрим журнал ошибок.

t+1…3 дня
Мониторинг

Следим за ошибками 5xx, откликом и отчётами Вебмастера и Search Console.

Когда лучше обратиться к специалисту

Если у сайта нет тестовой копии, много самописного кода или он давно не обновлялся, самостоятельный переход может обернуться простоем. Это особенно важно для интернет-магазинов и сервисов с онлайн-оплатой, где каждый час недоступности стоит денег.

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

Переходить сразу с PHP 5.6 или 7.0 на 8.3 не стоит. Двигайтесь поэтапно: 7.4, затем 8.1 или 8.2, затем актуальная версия. На каждом шаге запускайте проверку и тесты, так проще найти причину сбоя.

Итоги: как перевести сайт на PHP 8 безопасно

Перевод сайта на PHP 8 — это не риск, а регулярное техническое обслуживание. Опасно как раз откладывать его до тех пор, когда версия PHP давно потеряла поддержку.
  1. 01

    Сделайте бэкап и проверьте, что его можно восстановить

  2. 02

    Разверните тестовую копию и закройте её от индексации

  3. 03

    Обновите CMS, плагины и библиотеки до совместимых версий

  4. 04

    Просканируйте код с помощью PHPCompatibility, PHPStan и Rector

  5. 05

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

  6. 06

    После перехода следите за журналами, Яндекс Вебмастером и Google Search Console

Хорошо спланированный переход занимает от нескольких часов до нескольких дней, в зависимости от размера и возраста проекта. Результат — безопасный, быстрый и готовый к дальнейшим обновлениям сайт.

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

Перенесём ваш сайт на PHP 8 без потери трафика и заявок

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

Бесплатный аудит кодаОткат за минутуБез простоя сайта

Десятки сайтов уже работают на PHP 8

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

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

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

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

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

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

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

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

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

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

Контакты

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