DEV Community

Глеб Лужбин S-WEBS
Глеб Лужбин S-WEBS

Posted on • Originally published at s-webs24.ru

Как мы перевели сайт на 1С-Битрикс с PHP 7.4 на 8.2: разбор легаси-кода и неочевидных ошибок

Как мы перевели сайт на 1С-Битрикс с PHP 7.4 на 8.2: разбор легаси-кода и неочевидных ошибок

С февраля 2026 года 1С-Битрикс ограничивает поддержку продуктов на версиях PHP ниже 8.2. PHP 7.4 перестал получать обновления безопасности ещё в ноябре 2022 года — четыре года без исправлений уязвимостей для сайта, который принимает платежи и обрабатывает персональные данные.

Для servermall — крупного интернет-магазина серверного оборудования на 1С-Битрикс — вопрос стоял остро. Сайт с 2012 года, около 120 PHP-файлов с бизнес-логикой в /local/, кастомные компоненты, интеграция с AmoCRM, конфигураторы серверов, фильтры.

Мы выкатили PHP 8.2 на тестовую копию и методично фиксили ошибки. Всего изменили около 50 файлов. Основные категории проблем: нестатические методы, вызываемые статически (добавили static), count() и implode() на потенциально не-массивах (обернули в is_array), short open tags <? (заменили на <?php), define() без кавычек, старые конструкторы классов в сторонних модулях.

Попутно PHP 8.2 подсветил баги, которые годами жили в коде: перепутанные переменные в кешировании, свойства инфоблоков, приходившие строкой вместо массива. Stricter typing сработал как бесплатный статический анализатор.

Главный урок: если на 7.4 вы уже пишете с типами (declare(strict_types=1), тайп-хинты), переход на 8.2 — это точечная правка пары десятков файлов, а не переписывание всего. Из ~120 файлов в /local/ реально сломались около двух десятков.

После миграции сайт стабильно работает на PHP 8.2: принимает заказы, конфигуратор собирает серверы, B2B-кабинет работает. Производительность выросла на 10-18%. И главное — apt upgrade снова делает то, что должен: обновляет пакеты, а не ломает сайт.


Читать полностью на S-WEBS24

Top comments (0)