1С-Битрикс

Ошибка описания модулей после обновления PHP до 8.1+ в Битрикс: причины и решение

После обновления PHP до 8.1+ в 1С-Битрикс пропали названия модулей? Пошаговое руководство по исправлению ошибки описания модулей двумя способами

sqlka.ruОпубликовано: Чтение: 2 мин.
Ошибка описания модулей после обновления PHP до 8.1+ в Битрикс: причины и решение

После обновления PHP на сервере до версии 8.1 или выше администраторы сайтов на 1С-Битрикс могут столкнуться с неожиданной проблемой: в разделе «Marketplace» → «Установленные решения» пропадают названия и описания некоторых модулей. Вместо них отображается технический ключ или пустое поле. Эта ошибка связана с изменением в работе конструкторов классов в новых версиях PHP.

Причина ошибки

В PHP 8.0 и более поздних версиях был ужесточён синтаксис объявления методов. В некоторых старых модулях Битрикс, в файле /bitrix/modules/название.модуля/install/index.php, используется метод с именем, совпадающим с именем класса (что ранее работало как конструктор). В новых версиях PHP это вызывает конфликт, так как настоящим конструктором теперь должен быть только метод __construct(). В результате метод, возвращающий описание модуля, не выполняется корректно, и система не может получить его метаданные.

Способы решения

Способ 1. Предпочтительный — обновление модуля

Самый правильный и безопасный путь — обновить проблемный модуль до актуальной версии от разработчика.

  1. Зайдите в раздел «Marketplace» → «Установленные решения».
  2. Найдите модуль с отсутствующим названием.
  3. Проверьте наличие обновлений в Маркетплейсе или на сайте разработчика.
  4. Установите последнюю версию модуля. В большинстве случаев разработчики уже исправили код для совместимости с PHP 8.1+.

Способ 2. Ручное исправление кода (если обновление недоступно)

Внимание! Перед внесением изменений обязательно создайте резервную копию файла.

  1. Определите ключ проблемного модуля (например, some.module).
  2. Через файловый менеджер или FTP перейдите в папку модуля: /bitrix/modules/some.module/install/
  3. Откройте файл index.php для редактирования.
  4. Найдите внутри класса метод, имя которого совпадает с именем класса (это и есть устаревший конструктор).
  5. Исправление: Переименуйте этот метод в __construct().
    Было: function some_module() { ... }
    Стало: function __construct() { ... }
  6. Сохраните изменения и обновите страницу «Установленные решения» в административной панели Битрикс.

Важные замечания

  • Ручное исправление — это временное решение, если разработчик модуля не выпустил патч. При следующем официальном обновлении ваши правки будут перезаписаны.
  • Перед любыми манипуляциями с файлами создавайте полную резервную копию сайта.
  • Проверьте логи ошибок PHP (/bitrix/php_interface/errors.log) для точного определения всех проблемных модулей.

Заключение

Ошибка с пропаданием описаний модулей — это частый симптом несовместимости старого кода с современными версиями PHP. Для долгосрочной стабильности всегда старайтесь поддерживать все компоненты вашего сайта в актуальном состоянии. Регулярное обновление ядра Битрикс, модулей и использование подходящей версии PHP — лучшая профилактика подобных проблем.

Хотите освоить SQL для работы с данными?

В SQLka можно изучать SQL последовательно или готовиться к собеседованиям. Запросы выполняются прямо в браузере — устанавливать базу данных не нужно.

sqlka.ru

support@sqlka.ru

Дальше по теме

1С-Битрикс

Логирование в 1С-Битрикс: полное руководство для разработчика

Полное руководство по логированию в 1С-Битрикс: какие логгеры есть, как их настроить, форматировать сообщения и подключать к своим классам. Примеры кода и советы по использованию PSR-3

sqlka.ruЧтение: 4 мин.
← Все статьи