При обновлениях Битрикса первый шаг — это создание резервных копий:
Когда резервные копии сделаны, пробуем поднять версию 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. Удалили.
! ошибка при оформлении заказа
Добавление, удаление, изменение количества в корзине - не работает.
Поиск метода в классах и файлах не дал результатов.
Причина найдена в привязанном событии (среди связей модулей в БД).
Убрали, очистили кеш, через некоторое время заработали функции корзины.
Установили новые обновления битрикс и модулей:
Получили ошибку при открытии сайта из инкогнито.