При обновлениях Битрикса первый шаг — это создание резервных копий:
Когда резервные копии сделаны, пробуем поднять версию php с 7.1 до 7.4. Существенных отличий между версиями нет, поэтому проблем с работоспособностью не возникло.
В админ панели у нас 2 сайта на одной лицензии.
Разворачиваем для обоих тестовые копии, которые будем обновлять, приведем в рабочее состояние и затем перекинем на них домены, а старые сайты "отключим".
Оба тестовых сайта у нас в рабочем состоянии на версии php 7.4 без проверки интеграций.
Мы проставили симлинки для связи этих сайтов, так как у них одно ядро.
Скорректировали настройки и путей, прав доступа на хостинге к общим папкам.
Провели обновления на тестовой копии:
Запустили допустимые обновления на версии php 7.4.
При обновлении возникала ошибка:
Ошибка устранена. С текущей 7.4 версией все обновления установлены:
Ошибка модуля геолокации, так как настроен Sypex Geo, а адрес сайта другой. Внесли изменения в файл local/php_interface/event_list.php.
Также обнаружены ошибки по классу Rees46.
Класс связан с модулем
Загрузили обновление модуля REES46. Ошибка корзины после обновления исчезла.
Запустили обновление Интернет-магазина и несколько установленных решений:
Обновление модуля интеграции со СДЭК - самое объемное. Версии модулей сильно отличаются, в процессе обновления данного дополнения возникало много ошибок.
После обновления всех дополнений сделали попытку переключения на версию 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 также были проблемы, выдавало ошибку:
Проблема в настройках работы кеширования memcached
[Bitrix\Main\NotSupportedException] memcache extension is not loaded. (150)
Исправили.
Также обнаружена проблема
При обновлении версии php до 8 и установке актуальных обновлений битрикс кроме указанных выше были решены проблемы синхронизации с Мой склад и сервисом отправки смс.
Общая сложность работ по обновлению битрикс и поднятию php до 8.2 составила более 70 часов.
Еще одним этапом работ было восстановление работоспособности второго сайта на этой же админке битрикс. Не смотря на то, что второй сайт - простой лендинг, на его восстановление так же было потрачено более 6 часов.
После тестирования и отладки сайты были запущены в боевом режиме, внесены финальные правки по интеграциям.
В дальнейшем по сайту был выполнен еще ряд доработок, связанных с платежными системами - добавление новых способов оплаты по QR и СБП с сохранением печати чеков.