Обновление PHP в Magento: пошаговый план без простоев
Три стопки пустых плашек на подложке: высокая в центре и две низкие по бокам, верхняя плашка правой зелёная

Обновление PHP в Magento: пошаговый план без простоев

Чтобы обновить PHP в Magento 2, сверьте версию магазина с таблицей совместимости, проверьте модули на staging и переключите php-fpm.

Обновление PHP в Magento 2: что нужно знать до начала

Обновить PHP в Magento 2 можно безопасно, если действовать по порядку: определить версию PHP, поддерживаемую вашим релизом Magento, проверить модули и кастомный код на staging, обновить зависимости через Composer и только потом переключить php-fpm на продакшене.

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

В статье разберём таблицу совместимости, подготовку магазина, пошаговый план, команды, типичные ошибки и проверки после переключения. Материал подойдёт владельцам интернет-магазинов, техническим директорам и разработчикам, которые отвечают за поддержку Magento Open Source и Adobe Commerce.

Почему откладывать обновление PHP опасно

Каждая ветка PHP живёт ограниченное время. Когда выходит срок завершения поддержки, интерпретатор перестаёт получать исправления безопасности. Для интернет-магазина это не абстрактный риск: на сервере обрабатываются персональные данные покупателей, заказы и платёжные сценарии. PHP 7.4 потерял поддержку в ноябре 2022 года, PHP 8.0 — в ноябре 2023-го, а для ветки 8.1 активная поддержка безопасности завершилась в конце 2025 года.

Есть и практическая причина. Новые релизы Magento и свежие версии сторонних расширений перестают поддерживать устаревший PHP. Чем дольше магазин остаётся на старой версии, тем сложнее потом выполнить обновление: приходится менять сразу ядро, десятки модулей и часть кастомного кода. Такой «большой скачок» обходится дороже и рискованнее, чем регулярные небольшие шаги.

Наконец, производительность. Современные ветки PHP быстрее обрабатывают запросы, эффективнее расходуют память и лучше работают с OPcache. Для каталога с тысячами товаров это заметно в скорости ответа сервера, а значит, в метриках скорости страниц и в поведенческих факторах, которые учитывают Яндекс и Google.

совместимость / magento → php

Какой PHP поддерживает ваша версия Magento

01
Magento 2.4.3
PHP 7.4
ветка php снята с поддержки
02
Magento 2.4.4 / 2.4.5
PHP 8.1
ветка php 8.1 уходит из поддержки
03
Magento 2.4.6
PHP 8.1 / 8.2
рекомендуем 8.2
04
Magento 2.4.7
PHP 8.2 / 8.3
рекомендуем 8.3
05
Magento 2.4.8
PHP 8.3 / 8.4
актуальная связка

Список зависит от патч-релиза. Перед работой сверяйтесь с системными требованиями Adobe для точной версии вашего магазина.

Как выбрать целевую версию PHP

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

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

Отдельно проверьте остальной стек. Новые релизы Magento требуют актуальных версий Composer, MySQL или MariaDB, а также OpenSearch вместо устаревшего Elasticsearch. Иногда обновление PHP тянет за собой обновление этих компонентов, и их лучше планировать заранее, в одном окне работ.

Что даст обновление PHP интернет-магазину

  1. 01

    Закрытие уязвимостей: актуальная ветка PHP получает исправления безопасности, а значит, снижается риск взлома и утечки данных покупателей.

  2. 02

    Рост скорости: современный PHP быстрее исполняет код и эффективнее работает с OPcache, поэтому сокращается время ответа сервера на карточках и в каталоге.

  3. 03

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

  4. 04

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

  5. 05

    Простые будущие апгрейды: регулярные небольшие шаги дешевле одного «большого скачка» через несколько лет.

Подготовка: аудит, резервные копии и staging

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

2. Staging-окружение. Разверните точную копию продакшена: те же версии Magento, MySQL или MariaDB, OpenSearch, Redis или Valkey, Varnish и nginx. Новая версия PHP ставится только здесь. Ошибка на staging стоит минут, а на боевом сайте — потерянных заказов.

3. Аудит модулей. Составьте список всех расширений из composer.json и папки app/code. Для каждого уточните, поддерживает ли разработчик выбранную версию PHP. Модули, которые давно не обновлялись, — главный источник проблем.

4. Проверка кода. Запустите статический анализ совместимости: инструмент PHP_CodeSniffer с набором правил PHPCompatibility показывает строки, которые перестанут работать на новой версии. Для ядра и официальных модулей полезен Upgrade Compatibility Tool от Adobe, он находит проблемы, связанные с обновлением Magento.

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

Готов ли магазин к новой версии PHP

  • Бэкап проверенФайлы и база восстановлены на отдельном сервере хотя бы один раз
  • Версия Magento подходитВыбранный PHP есть в системных требованиях вашего релиза
  • Модули совместимыДля каждого расширения есть релиз с поддержкой новой версии PHP
  • PHP-расширения установленыintl, bcmath, gd, soap, sodium, xsl, zip, sockets и другие из списка Magento
  • Код проверен анализаторомОтчёт PHPCompatibility по app/code не содержит критичных замечаний
  • План отката готовСтарый пул php-fpm сохранён и может быть включён за несколько минут

От подготовки к самому обновлению

Когда чек-лист закрыт, можно переходить к работам. Лучше всего проводить их в период минимального трафика: ночью или в будний день вне пиковых часов. Заранее предупредите отдел продаж и маркетинга и приостановите рекламные кампании в Яндекс Директе и Google Ads, если ожидается недоступность сайта.

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

Пошаговый план обновления PHP в Magento 2

  1. 01

    Проверьте текущую среду: выполните php -v, посмотрите версию Magento командой bin/magento --version и выведите список установленных PHP-модулей через php -m.

  2. 02

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

  3. 03

    Настройте php.ini для нового интерпретатора: memory_limit не ниже 2G для CLI и компиляции, opcache.save_comments=1 (без этого Magento не работает), увеличенный realpath_cache_size, включённый OPcache.

  4. 04

    Обновите зависимости: при необходимости обновите ядро Magento и сторонние модули через Composer до версий, совместимых с новым PHP, затем выполните composer check-platform-reqs.

  5. 05

    Включите режим обслуживания командой bin/magento maintenance:enable и переключите веб-сервер (nginx или Apache) на новый сокет php-fpm.

  6. 06

    Выполните setup:upgrade, setup:di:compile и setup:static-content:deploy, затем переиндексируйте данные и очистите кэш.

  7. 07

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

  8. 08

    Следите за логами var/log и журналом php-fpm в течение нескольких дней. Старую версию PHP удаляйте только после стабильной работы без ошибок.

Что происходит с Composer и зависимостями

Самое тонкое место обновления — зависимости. Если в composer.json в разделе config указан platform.php с жёстко заданной старой версией, Composer будет подбирать пакеты под неё и не подтянет релизы, рассчитанные на новый PHP. Проверьте этот параметр и приведите его в соответствие с целевой версией.

Обновляйте пакеты поэтапно: сначала ядро Magento, затем модули, критичные для продаж (оплата, доставка, интеграции с 1С и CRM), потом всё остальное. После каждого этапа проверяйте магазин. Если что-то сломалось, вы сразу видите, какое именно обновление стало причиной.

cli / порядок команд

Базовая последовательность на сервере

01php -vпроверить версию интерпретатора
02composer check-platform-reqsсверить требования пакетов
03bin/magento maintenance:enableвключить режим обслуживания
04composer installустановить зависимости под новый PHP
05bin/magento setup:upgradeприменить обновления схемы и модулей
06bin/magento setup:di:compileпересобрать генерируемый код
07bin/magento setup:static-content:deploy -fразвернуть статику
08bin/magento indexer:reindexобновить индексы
09bin/magento cache:flushсбросить кэш
10bin/magento maintenance:disableоткрыть магазин для покупателей

Чаще всего ломаются модули и кастомный код

Core Magento обычно обновляется без сюрпризов: Adobe выпускает релизы, заранее подготовленные под новые ветки PHP. Основные проблемы приходят из двух источников — сторонних расширений и собственных доработок.

В PHP 8.1 стали выдавать предупреждения о передаче null в параметры встроенных функций, которые не принимают null. В PHP 8.2 объявлено устаревшим создание динамических свойств у классов. В старом коде это встречается повсеместно и засоряет логи предупреждениями Deprecated, а в будущих версиях перерастёт в ошибки. В PHP 8.x также строже обрабатываются типы, сравнения строк и чисел, работа со скалярными значениями.

Поэтому не отключайте вывод предупреждений «чтобы не мешали». Лучше разберите их по частоте и исправьте самые массовые источники. Так вы не только обновитесь сейчас, но и подготовитесь к следующему шагу.

Типичные ошибки при обновлении PHP в Magento

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

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

  • Меняют PHP сразу на продакшене без репетиции на staging.
  • Не проверяют совместимость сторонних модулей и узнают о проблемах от покупателей.
  • Забывают установить обязательные PHP-расширения для новой версии и получают белый экран.
  • Оставляют в composer.json устаревшую платформу и не получают совместимых пакетов.
  • Скрывают предупреждения Deprecated вместо их исправления.
  • Удаляют старую версию PHP сразу и лишаются возможности быстрого отката.

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

  1. 01

    Репетируйте весь сценарий на копии продакшена и замеряйте время каждого шага.

  2. 02

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

  3. 03

    Сверьте список php -m с требованиями Magento до переключения.

  4. 04

    Приведите platform.php в composer.json в соответствие с целевой версией.

  5. 05

    Анализируйте логи, группируйте предупреждения и исправляйте самые частые.

  6. 06

    Держите старый пул php-fpm в резерве минимум неделю после запуска.

Контроль после запуска

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

Отдельно проверьте всё, что связано с каналами привлечения. Если у вас выгружаются товарные фиды для Яндекс Директа, Яндекс Маркета и Google Merchant Center, убедитесь, что они генерируются корректно и не содержат ошибок. Сломанная выгрузка быстро приведёт к остановке показов товаров.

Что проверитьКак проверитьПризнак проблемы
Главная и каталогОткрыть страницы, проверить вёрстку и фильтрыОшибка 500, пустые блоки, сломанные стили
Карточка товараПроверить цену, остатки, галерею, отзывыНе грузятся изображения, пропали атрибуты
Корзина и оформлениеОформить тестовый заказ с разными способамиНе считается доставка, не применяется купон
Оплата и доставкаВыполнить тестовые платежи в песочнице платёжной системыЗависание при оплате, нет статуса заказа
Админ-панельСоздать товар, изменить заказ, запустить индексациюБелый экран, ошибки в разделе продаж
Фиды и интеграцииСравнить выгрузку для Яндекс Директа и Google Merchant Center с прежнейПустой или неполный файл, ошибки в кабинетах
Следите за ошибками 5xx и индексацией в Яндекс Вебмастере и Google Search Console, а за целями и e-commerce-событиями — в Яндекс Метрике и Google Analytics. Резкий спад заказов или рост отказов в первые дни после обновления — повод немедленно проверить логи и при необходимости откатиться.

Итоги: как обновить PHP в Magento спокойно

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

    Версию PHP определяет релиз Magento: сверяйтесь с системными требованиями Adobe.

  2. 02

    Сначала бэкап, staging и аудит модулей, затем переключение на продакшене.

  3. 03

    Обновляйте зависимости через Composer поэтапно и проверяйте platform.php.

  4. 04

    Не скрывайте предупреждения Deprecated: исправляйте их при подготовке.

  5. 05

    После запуска контролируйте логи, заказы, фиды, а также ошибки в Вебмастере и Search Console.

Если у вас много кастомных доработок или магазин работает на устаревшей версии Magento, лучше доверить миграцию специалистам. Мы проведём аудит, составим план, протестируем обновление на staging и переключим PHP без потери заказов.

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

Обновим PHP в вашем Magento без простоев и потери заказов

Проверим совместимость модулей, протестируем на staging и аккуратно переключим версию PHP на продакшене

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

Более 50 миграций на PHP 8.x

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

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

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

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

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

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

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

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

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

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

Контакты

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