После обновления PHP на сервере до версии 8.1 или выше администраторы сайтов на 1С-Битрикс могут столкнуться с неожиданной проблемой: в разделе «Marketplace» → «Установленные решения» пропадают названия и описания некоторых модулей. Вместо них отображается технический ключ или пустое поле. Эта ошибка связана с изменением в работе конструкторов классов в новых версиях PHP.
Причина ошибки
В PHP 8.0 и более поздних версиях был ужесточён синтаксис объявления методов. В некоторых старых модулях Битрикс, в файле /bitrix/modules/название.модуля/install/index.php, используется метод с именем, совпадающим с именем класса (что ранее работало как конструктор). В новых версиях PHP это вызывает конфликт, так как настоящим конструктором теперь должен быть только метод __construct(). В результате метод, возвращающий описание модуля, не выполняется корректно, и система не может получить его метаданные.
Способы решения
Способ 1. Предпочтительный — обновление модуля
Самый правильный и безопасный путь — обновить проблемный модуль до актуальной версии от разработчика.
- Зайдите в раздел «Marketplace» → «Установленные решения».
- Найдите модуль с отсутствующим названием.
- Проверьте наличие обновлений в Маркетплейсе или на сайте разработчика.
- Установите последнюю версию модуля. В большинстве случаев разработчики уже исправили код для совместимости с PHP 8.1+.
Способ 2. Ручное исправление кода (если обновление недоступно)
Внимание! Перед внесением изменений обязательно создайте резервную копию файла.
- Определите ключ проблемного модуля (например,
some.module).
- Через файловый менеджер или FTP перейдите в папку модуля:
/bitrix/modules/some.module/install/
- Откройте файл
index.php для редактирования.
- Найдите внутри класса метод, имя которого совпадает с именем класса (это и есть устаревший конструктор).
- Исправление: Переименуйте этот метод в
__construct().
Было: function some_module() { ... }
Стало: function __construct() { ... }
- Сохраните изменения и обновите страницу «Установленные решения» в административной панели Битрикс.
Важные замечания
- Ручное исправление — это временное решение, если разработчик модуля не выпустил патч. При следующем официальном обновлении ваши правки будут перезаписаны.
- Перед любыми манипуляциями с файлами создавайте полную резервную копию сайта.
- Проверьте логи ошибок PHP (
/bitrix/php_interface/errors.log) для точного определения всех проблемных модулей.
Заключение
Ошибка с пропаданием описаний модулей — это частый симптом несовместимости старого кода с современными версиями PHP. Для долгосрочной стабильности всегда старайтесь поддерживать все компоненты вашего сайта в актуальном состоянии. Регулярное обновление ядра Битрикс, модулей и использование подходящей версии PHP — лучшая профилактика подобных проблем.
После обновления PHP на сервере до версии 8.1 или выше администраторы сайтов на 1С-Битрикс могут столкнуться с неожиданной проблемой: в разделе «Marketplace» → «Установленные решения» пропадают названия и описания некоторых модулей. Вместо них отображается технический ключ или пустое поле. Эта ошибка связана с изменением в работе конструкторов классов в новых версиях PHP.
Причина ошибки
В PHP 8.0 и более поздних версиях был ужесточён синтаксис объявления методов. В некоторых старых модулях Битрикс, в файле
/bitrix/modules/название.модуля/install/index.php, используется метод с именем, совпадающим с именем класса (что ранее работало как конструктор). В новых версиях PHP это вызывает конфликт, так как настоящим конструктором теперь должен быть только метод__construct(). В результате метод, возвращающий описание модуля, не выполняется корректно, и система не может получить его метаданные.Способы решения
Способ 1. Предпочтительный — обновление модуля
Самый правильный и безопасный путь — обновить проблемный модуль до актуальной версии от разработчика.
Способ 2. Ручное исправление кода (если обновление недоступно)
Внимание! Перед внесением изменений обязательно создайте резервную копию файла.
some.module)./bitrix/modules/some.module/install/index.phpдля редактирования.__construct().Было:
function some_module() { ... }Стало:
function __construct() { ... }Важные замечания
/bitrix/php_interface/errors.log) для точного определения всех проблемных модулей.Заключение
Ошибка с пропаданием описаний модулей — это частый симптом несовместимости старого кода с современными версиями PHP. Для долгосрочной стабильности всегда старайтесь поддерживать все компоненты вашего сайта в актуальном состоянии. Регулярное обновление ядра Битрикс, модулей и использование подходящей версии PHP — лучшая профилактика подобных проблем.