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

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

Когда резервные копии сделаны, пробуем поднять версию 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. Удалили.

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

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

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

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

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

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

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