
Обновление PHP в Magento: пошаговый план без простоев
Чтобы обновить PHP в Magento 2, сверьте версию магазина с таблицей совместимости, проверьте модули на staging и переключите php-fpm.
Обновление PHP в Magento 2: что нужно знать до начала
Обновить PHP в Magento 2 можно безопасно, если действовать по порядку: определить версию PHP, поддерживаемую вашим релизом Magento, проверить модули и кастомный код на staging, обновить зависимости через Composer и только потом переключить php-fpm на продакшене.
В статье разберём таблицу совместимости, подготовку магазина, пошаговый план, команды, типичные ошибки и проверки после переключения. Материал подойдёт владельцам интернет-магазинов, техническим директорам и разработчикам, которые отвечают за поддержку Magento Open Source и Adobe Commerce.
Почему откладывать обновление PHP опасно
Каждая ветка PHP живёт ограниченное время. Когда выходит срок завершения поддержки, интерпретатор перестаёт получать исправления безопасности. Для интернет-магазина это не абстрактный риск: на сервере обрабатываются персональные данные покупателей, заказы и платёжные сценарии. PHP 7.4 потерял поддержку в ноябре 2022 года, PHP 8.0 — в ноябре 2023-го, а для ветки 8.1 активная поддержка безопасности завершилась в конце 2025 года.
Есть и практическая причина. Новые релизы Magento и свежие версии сторонних расширений перестают поддерживать устаревший PHP. Чем дольше магазин остаётся на старой версии, тем сложнее потом выполнить обновление: приходится менять сразу ядро, десятки модулей и часть кастомного кода. Такой «большой скачок» обходится дороже и рискованнее, чем регулярные небольшие шаги.
Наконец, производительность. Современные ветки PHP быстрее обрабатывают запросы, эффективнее расходуют память и лучше работают с OPcache. Для каталога с тысячами товаров это заметно в скорости ответа сервера, а значит, в метриках скорости страниц и в поведенческих факторах, которые учитывают Яндекс и Google.
Какой PHP поддерживает ваша версия Magento
Список зависит от патч-релиза. Перед работой сверяйтесь с системными требованиями Adobe для точной версии вашего магазина.
Как выбрать целевую версию PHP
Из таблицы видно: у большинства релизов есть две поддерживаемые версии PHP. Обычно разумнее выбирать более новую из них, если все ваши расширения подтвердили совместимость. Так вы получите дольше действующую поддержку безопасности и не будете повторять работу через год.
Если магазин работает на Magento 2.4.3 или более старом релизе, придётся делать два шага: сначала обновить ядро до версии, поддерживающей современный PHP, затем менять интерпретатор. Попытка сделать это в обратном порядке заканчивается ошибками Composer и белым экраном, потому что старое ядро не умеет работать на новом PHP.
Отдельно проверьте остальной стек. Новые релизы Magento требуют актуальных версий Composer, MySQL или MariaDB, а также OpenSearch вместо устаревшего Elasticsearch. Иногда обновление PHP тянет за собой обновление этих компонентов, и их лучше планировать заранее, в одном окне работ.
Что даст обновление PHP интернет-магазину
- 01
Закрытие уязвимостей: актуальная ветка PHP получает исправления безопасности, а значит, снижается риск взлома и утечки данных покупателей.
- 02
Рост скорости: современный PHP быстрее исполняет код и эффективнее работает с OPcache, поэтому сокращается время ответа сервера на карточках и в каталоге.
- 03
Совместимость с новыми расширениями: разработчики модулей поддерживают только актуальные версии, и обновление открывает доступ к свежим релизам.
- 04
Меньше расходов на сервер: при той же нагрузке требуется меньше процессорного времени, что снижает нагрузку в пиковые распродажи.
- 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
- 01
Проверьте текущую среду: выполните php -v, посмотрите версию Magento командой bin/magento --version и выведите список установленных PHP-модулей через php -m.
- 02
Установите новую версию PHP параллельно со старой вместе с php-fpm и всеми обязательными расширениями. Старую версию пока не удаляйте — она понадобится для быстрого отката.
- 03
Настройте php.ini для нового интерпретатора: memory_limit не ниже 2G для CLI и компиляции, opcache.save_comments=1 (без этого Magento не работает), увеличенный realpath_cache_size, включённый OPcache.
- 04
Обновите зависимости: при необходимости обновите ядро Magento и сторонние модули через Composer до версий, совместимых с новым PHP, затем выполните composer check-platform-reqs.
- 05
Включите режим обслуживания командой bin/magento maintenance:enable и переключите веб-сервер (nginx или Apache) на новый сокет php-fpm.
- 06
Выполните setup:upgrade, setup:di:compile и setup:static-content:deploy, затем переиндексируйте данные и очистите кэш.
- 07
Выключите режим обслуживания и пройдите контрольный сценарий: главная, каталог, карточка товара, корзина, оформление заказа, оплата, личный кабинет и админка.
- 08
Следите за логами var/log и журналом php-fpm в течение нескольких дней. Старую версию PHP удаляйте только после стабильной работы без ошибок.
Что происходит с Composer и зависимостями
Самое тонкое место обновления — зависимости. Если в composer.json в разделе config указан platform.php с жёстко заданной старой версией, Composer будет подбирать пакеты под неё и не подтянет релизы, рассчитанные на новый PHP. Проверьте этот параметр и приведите его в соответствие с целевой версией.
Обновляйте пакеты поэтапно: сначала ядро Magento, затем модули, критичные для продаж (оплата, доставка, интеграции с 1С и CRM), потом всё остальное. После каждого этапа проверяйте магазин. Если что-то сломалось, вы сразу видите, какое именно обновление стало причиной.
Базовая последовательность на сервере
php -vпроверить версию интерпретатораcomposer check-platform-reqsсверить требования пакетовbin/magento maintenance:enableвключить режим обслуживанияcomposer installустановить зависимости под новый PHPbin/magento setup:upgradeприменить обновления схемы и модулейbin/magento setup:di:compileпересобрать генерируемый кодbin/magento setup:static-content:deploy -fразвернуть статикуbin/magento indexer:reindexобновить индексыbin/magento cache:flushсбросить кэшbin/magento maintenance:disableоткрыть магазин для покупателейЧаще всего ломаются модули и кастомный код
Core Magento обычно обновляется без сюрпризов: Adobe выпускает релизы, заранее подготовленные под новые ветки PHP. Основные проблемы приходят из двух источников — сторонних расширений и собственных доработок.
В PHP 8.1 стали выдавать предупреждения о передаче null в параметры встроенных функций, которые не принимают null. В PHP 8.2 объявлено устаревшим создание динамических свойств у классов. В старом коде это встречается повсеместно и засоряет логи предупреждениями Deprecated, а в будущих версиях перерастёт в ошибки. В PHP 8.x также строже обрабатываются типы, сравнения строк и чисел, работа со скалярными значениями.
Поэтому не отключайте вывод предупреждений «чтобы не мешали». Лучше разберите их по частоте и исправьте самые массовые источники. Так вы не только обновитесь сейчас, но и подготовитесь к следующему шагу.
Типичные ошибки при обновлении PHP в Magento
Как делают неправильно
- Меняют PHP сразу на продакшене без репетиции на staging.
- Не проверяют совместимость сторонних модулей и узнают о проблемах от покупателей.
- Забывают установить обязательные PHP-расширения для новой версии и получают белый экран.
- Оставляют в composer.json устаревшую платформу и не получают совместимых пакетов.
- Скрывают предупреждения Deprecated вместо их исправления.
- Удаляют старую версию PHP сразу и лишаются возможности быстрого отката.
Как правильно
- 01
Репетируйте весь сценарий на копии продакшена и замеряйте время каждого шага.
- 02
Составьте реестр модулей с версиями и подтверждением поддержки нового PHP от разработчиков.
- 03
Сверьте список php -m с требованиями Magento до переключения.
- 04
Приведите platform.php в composer.json в соответствие с целевой версией.
- 05
Анализируйте логи, группируйте предупреждения и исправляйте самые частые.
- 06
Держите старый пул php-fpm в резерве минимум неделю после запуска.
Контроль после запуска
Переключение — ещё не конец работы. Первые дни после обновления нужны, чтобы убедиться, что магазин не потерял ни скорость, ни конверсию. Проверяйте не только техническую сторону, но и бизнес-метрики: количество заказов, успешность оплат, долю брошенных корзин.
Отдельно проверьте всё, что связано с каналами привлечения. Если у вас выгружаются товарные фиды для Яндекс Директа, Яндекс Маркета и Google Merchant Center, убедитесь, что они генерируются корректно и не содержат ошибок. Сломанная выгрузка быстро приведёт к остановке показов товаров.
| Что проверить | Как проверить | Признак проблемы |
|---|---|---|
| Главная и каталог | Открыть страницы, проверить вёрстку и фильтры | Ошибка 500, пустые блоки, сломанные стили |
| Карточка товара | Проверить цену, остатки, галерею, отзывы | Не грузятся изображения, пропали атрибуты |
| Корзина и оформление | Оформить тестовый заказ с разными способами | Не считается доставка, не применяется купон |
| Оплата и доставка | Выполнить тестовые платежи в песочнице платёжной системы | Зависание при оплате, нет статуса заказа |
| Админ-панель | Создать товар, изменить заказ, запустить индексацию | Белый экран, ошибки в разделе продаж |
| Фиды и интеграции | Сравнить выгрузку для Яндекс Директа и Google Merchant Center с прежней | Пустой или неполный файл, ошибки в кабинетах |
Итоги: как обновить PHP в Magento спокойно
- 01
Версию PHP определяет релиз Magento: сверяйтесь с системными требованиями Adobe.
- 02
Сначала бэкап, staging и аудит модулей, затем переключение на продакшене.
- 03
Обновляйте зависимости через Composer поэтапно и проверяйте platform.php.
- 04
Не скрывайте предупреждения Deprecated: исправляйте их при подготовке.
- 05
После запуска контролируйте логи, заказы, фиды, а также ошибки в Вебмастере и Search Console.
Если у вас много кастомных доработок или магазин работает на устаревшей версии Magento, лучше доверить миграцию специалистам. Мы проведём аудит, составим план, протестируем обновление на staging и переключим PHP без потери заказов.
Часто задаваемые вопросы
Ту, которую официально поддерживает ваша версия Magento. Например, Magento 2.4.6 работает на PHP 8.1 и 8.2, 2.4.7 — на 8.2 и 8.3, 2.4.8 — на 8.3 и 8.4. Точный список смотрите в системных требованиях Adobe для вашего релиза и патча.
Только в пределах поддерживаемых версий. Если магазин на Magento 2.4.3 и PHP 7.4, перейти на PHP 8.1 без обновления ядра нельзя. Сначала нужно обновить Magento до релиза, совместимого с новым PHP, а затем менять версию интерпретатора.
Само переключение php-fpm занимает минуты. Основное время уходит на подготовку: аудит модулей, проверка кастомного кода и тесты на staging. Для магазина с 20–40 расширениями это обычно от нескольких дней до пары недель.
Напрямую нет, но косвенно да. Более новый PHP ускоряет генерацию страниц и снижает риск уязвимостей. Если после обновления появятся ошибки 5xx или сломается вёрстка, это отразится на индексации. Поэтому следите за отчётами в Яндекс Вебмастере и Google Search Console.
Обновим PHP в вашем Magento без простоев и потери заказов
Проверим совместимость модулей, протестируем на staging и аккуратно переключим версию PHP на продакшене
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Более 50 миграций на PHP 8.x



