×

Сложный проект по обновлению интернет-магазина на Битрикс и поднятие версии php 7.1 до php 8.2

Подготовка к обновлению

При обновлениях Битрикса первый шаг — это создание резервных копий:

Когда резервные копии сделаны, пробуем поднять версию php с 7.1 до 7.4. Существенных отличий между версиями нет, поэтому проблем с работоспособностью не возникло.

В админ панели у нас 2 сайта на одной лицензии.

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

Обновления битрикс на php 7.4

Оба тестовых сайта у нас в рабочем состоянии на версии php 7.4 без проверки интеграций.

Мы проставили симлинки для связи этих сайтов, так как у них одно ядро.

Скорректировали настройки и путей, прав доступа на хостинге к общим папкам.

Провели обновления на тестовой копии:

Запустили допустимые обновления на версии php 7.4.

При обновлении возникала ошибка:

Ошибка устранена. С текущей 7.4 версией все обновления установлены:

Ошибка модуля геолокации, так как настроен Sypex Geo, а адрес сайта другой. Внесли изменения в файл local/php_interface/event_list.php.

Также обнаружены ошибки по классу Rees46.

Класс связан с модулем

Загрузили обновление модуля REES46. Ошибка корзины после обновления исчезла.

Запустили обновление Интернет-магазина и несколько установленных решений:

Обновление модуля интеграции со СДЭК - самое объемное. Версии модулей сильно отличаются, в процессе обновления данного дополнения возникало много ошибок.

Переключение php 7.4 - 8.1

После обновления всех дополнений сделали попытку переключения на версию php 8.1.

Сайт не открывается - ошибки!

Откатили версию php обратно.

Модуль krivovnet.mrocketpopup -  платный, версия устарела. Удаляем его.

Вторая попытка поднятия версии php дает  много сообщений в логе Битрикса. Одно из них - фатальное.

Модуль skyweb24_referralsales -  платный, установлена демо-версия. Удалено.

Также удалили не продленные демо-версии других модулей:

Следующая попытка обновления -  сайт не работает, ошибок еще больше.

Много ошибок выдает модуль доставки ipol.ddelivery

В службах доставки интернет-магазина данная доставка неактивна.

Данный модуль не обнаружен на маркетплейсе битрикса, модуль старый и установлен давно. Удалили.

Следующая попытка переключения битрикс на php8 - сайт не открывается.

Обнаружен модуль embx.orderhistory. В новой версии магазина (от 15.5 и выше) модуль не работает. Удаляем.

Следующая попытка переключения на php8 - три ошибки:

Путем исследования вышли на пользовательские функции, постепенно устраняя ошибку за ошибкой.

После устранения обнаруженных ошибок, страница обновления платформы битрикс открылась на 8.1 версии.

Появилась возможность установки остальных обновлений начиная с 8 версии.

Некоторые страницы админки битрикса по прежнему не открываются.

Открылась страница списка решений, но у некоторых решений нет описания и каких либо данных:

! В логах ошибки.

project::InitProject

CBitrixXscan::OnBuildGlobalMenu

устранена позже (из за встроенного модуля qs_divisory)

! Ошибка при добавлении в корзину

.../ajax/cart.php:6

call_user_func_array(): Argument #1 ($callback) must be a valid callback, class Rees46\Events does not have a method "OnSaleBasketItemBeforeSavedMy"

устранена позже

Страницы редактирования инфоблоков - открываются.

! Страница списка заказов открывается, а редактирование отдельного заказа - нет.

После корректировки статичности классов:

Принято решение провести доступные обновления ядра:

Среди обновлений модуль qs_divisory значительно расширяет стандартный функционал 1C-Bitrix. Удалили.

! ошибка при оформлении заказа

Добавление, удаление, изменение количества в корзине - не работает.

Поиск метода в классах и файлах не дал результатов.

Причина найдена в привязанном событии (среди связей модулей в БД).

Убрали, очистили кеш, через некоторое время заработали функции корзины.

Установили новые обновления битрикс и модулей:

Получили ошибку при открытии сайта из инкогнито.

Исправили.

При тестировании обнаружена ошибка при изменении количества в корзине:

Пошагово отлавливали и устраняли ошибки.

Правки в модулях.

Изменили значения некоторых констант.

Правки в агентах.

Правки  в init.

Правки в шаблонах.

Обновление на php 8.2

Поменяли версию php на 8.2. На версии php 8.2 также были проблемы, выдавало ошибку:

Проблема в настройках работы кеширования memcached

[Bitrix\Main\NotSupportedException] memcache extension is not loaded. (150)

Исправили.

Также обнаружена проблема


Оценка результатов работы

При обновлении версии php до 8 и установке актуальных обновлений битрикс кроме указанных выше были решены проблемы синхронизации с Мой склад и сервисом отправки смс.

Общая сложность работ по обновлению битрикс и поднятию php до 8.2 составила более 70 часов. 

Еще одним этапом работ было восстановление работоспособности второго сайта на этой же админке битрикс.  Не смотря на то, что второй сайт - простой лендинг, на его восстановление так же было потрачено более 6 часов.

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

В дальнейшем по сайту был выполнен еще ряд доработок, связанных с платежными системами - добавление новых способов оплаты по QR и СБП с сохранением печати чеков.