Росвеб
Гарантия качества и порядочность
Каталог
По всему сайту
По каталогу
Решения
Готовые сайты
Готовые интернет-магазины
Решения для Битрикс24
Для интернет-магазина
Поддержка клиентов
Маркетинг, реклама
Интеграция
Инструменты
Мобильные приложения
Модули битрикс
Компания
О компании
Команда
Документы
Отзывы
Вопросы и ответы
Услуги
Разработка сайтов
Дизайн и брендинг
Сопровождение сайтов
Аудит и аналитика
Хостинг и домены
Блог
Контакты
Заказать сайт
+7 (982) 413-33-94
Заказать звонок
Задать вопрос
Войти
  • Корзина0
  • Избранные товары0
  • Сравнение товаров0
info@rosveb.ru
г. Краснодар, ул. Покрышкина 4/9 пом.175
  • Вконтакте
  • Telegram
  • WhatsApp
Ваш город
Дублин
+7 (982) 413-33-94
  • WhatsApp
Войти
Сравнение0
Избранные товары 0
Корзина 0
Росвеб
Гарантия качества и порядочность
Компания
  • О компании
  • Команда
  • Документы
  • Отзывы
  • Вопросы и ответы
Услуги
  • Разработка сайтов
    • Интернет-магазины
    • Корпоративные сайты
    • Сайты-каталоги
    • Лендинги
    • Цифровые медиа
  • Дизайн и брендинг
    • Разработка дизайна веб-сайта
    • Анимация и интерактивный дизайн
    • Редизайн сайта
    • Аудит бренда и сайта
    • Айдентика для социальных сетей
  • Сопровождение сайтов
    • Техническая поддержка сайта
    • SEO-продвижение
    • Обновление контента
    • Мониторинг безопасности
    • Лечение от вирусов
  • Аудит и аналитика
    • Технический аудит сайта
    • UX/UI-аудит
    • Анализ производительности
    • Аудит структуры сайта
    • Аудит бренда и сайта
  • Хостинг и домены
    • Перенос сайта на новый хостинг
    • SSL-сертификаты и управление DNS
    • Оптимизация серверной инфраструктуры
Решения
1С-Битрикс
1С
АСПРО
WordPress
Мой склад
  • Готовые сайты
    Готовые сайты
  • Готовые интернет-магазины
    Готовые интернет-магазины
  • Решения для Битрикс24
    Решения для Битрикс24
  • Для интернет-магазина
    Для интернет-магазина
  • Поддержка клиентов
    Поддержка клиентов
  • Маркетинг, реклама
    Маркетинг, реклама
  • Интеграция
    Интеграция
  • Инструменты
    Инструменты
  • Мобильные приложения
    Мобильные приложения
  • Модули битрикс
    Модули битрикс
Блог
Контакты
Заказать сайт
+  ЕЩЕ
    Росвеб
    Компания
    • О компании
    • Команда
    • Документы
    • Отзывы
    • Вопросы и ответы
    Услуги
    • Разработка сайтов
      • Интернет-магазины
      • Корпоративные сайты
      • Сайты-каталоги
      • Лендинги
      • Цифровые медиа
    • Дизайн и брендинг
      • Разработка дизайна веб-сайта
      • Анимация и интерактивный дизайн
      • Редизайн сайта
      • Аудит бренда и сайта
      • Айдентика для социальных сетей
    • Сопровождение сайтов
      • Техническая поддержка сайта
      • SEO-продвижение
      • Обновление контента
      • Мониторинг безопасности
      • Лечение от вирусов
    • Аудит и аналитика
      • Технический аудит сайта
      • UX/UI-аудит
      • Анализ производительности
      • Аудит структуры сайта
      • Аудит бренда и сайта
    • Хостинг и домены
      • Перенос сайта на новый хостинг
      • SSL-сертификаты и управление DNS
      • Оптимизация серверной инфраструктуры
    Решения
    1С-Битрикс
    1С
    АСПРО
    WordPress
    Мой склад
    • Готовые сайты
      Готовые сайты
    • Готовые интернет-магазины
      Готовые интернет-магазины
    • Решения для Битрикс24
      Решения для Битрикс24
    • Для интернет-магазина
      Для интернет-магазина
    • Поддержка клиентов
      Поддержка клиентов
    • Маркетинг, реклама
      Маркетинг, реклама
    • Интеграция
      Интеграция
    • Инструменты
      Инструменты
    • Мобильные приложения
      Мобильные приложения
    • Модули битрикс
      Модули битрикс
    Блог
    Контакты
    Заказать сайт
    +  ЕЩЕ
      Сравнение0
      Избранные товары 0
      Корзина 0
      Росвеб
      +7 (982) 413-33-94
      Сравнение0 Избранные товары 0 Корзина 0
      Телефоны
      +7 (982) 413-33-94
      • Компания
        • Назад
        • Компания
        • О компании
        • Команда
        • Документы
        • Отзывы
        • Вопросы и ответы
      • Услуги
        • Назад
        • Услуги
        • Разработка сайтов
        • Дизайн и брендинг
        • Сопровождение сайтов
        • Аудит и аналитика
        • Хостинг и домены
      • Решения
        • Назад
        • Решения
        • Готовые сайты Готовые сайты
        • Готовые интернет-магазины Готовые интернет-магазины
        • Решения для Битрикс24 Решения для Битрикс24
        • Для интернет-магазина Для интернет-магазина
        • Поддержка клиентов Поддержка клиентов
        • Маркетинг, реклама Маркетинг, реклама
        • Интеграция Интеграция
        • Инструменты Инструменты
        • Мобильные приложения Мобильные приложения
        • Модули битрикс Модули битрикс
      • Блог
      • Контакты
      • Заказать сайт
      • Дублин
      • Личный кабинет
      • Корзина0
      • Избранные товары0
      • Сравнение товаров0
      • +7 (982) 413-33-94
      Контактная информация
      г. Краснодар, ул. Покрышкина 4/9 пом.175
      info@rosveb.ru
      • Вконтакте
      • Telegram
      • WhatsApp
      Главная
      —
      Блог
      —Ошибка 'Не найден модуль main' в 1С-Битрикс: причины и решение

      Ошибка 'Не найден модуль main' в 1С-Битрикс: причины и решение

       1С‑Битрикс отвечает нам холодной фразой: «Не найден модуль main». Ситуация неприятная: сайт падает, cron‑скрипты не исполняются, а лог ошибок пухнет. На rosveb.ru регулярно разбираем такие кейсы и выносим из них практику: как быстро поднять проект без глубокой отладки, на что смотреть в первую очередь и какие ловушки обходить. Эта статья — концентрат рабочих сценариев и простых проверок, которые экономят часы.

      Обещание результата: за 10–15 минут вы проверите наличие файлов модуля, корректность пролога, переменные окружения в CLI/CRON, автозагрузку, версии PHP и права — и либо сразу устраните ошибку, либо получите чёткий чек-лист для восстановления.

      • Быстрые решения: 10 способов
      • Причины ошибки «Не найден модуль main»
      • Проверка наличия файлов модуля
      • Правильность подключения модуля
      • Восстановление модулей через консоль
      • Работа с autoload и init.php
      • Диагностика без глубокой отладки
      • CLI/CRON: частые причины и решения
      • Совместимость PHP и окружения (2024–2026)
      • Специфические кейсы
      • Профилактика
      • FAQ
      • Выводы и рекомендации

      Полезные ссылки:

      • Документация 1С‑Битрикс
      • Прологи и эпилоги в 1С‑Битрикс
      • PHP ini_get и конфигурация
      • open_basedir — что это и как влияет

      Быстрые решения: 10 способов устранить ошибку «Не найден модуль main»

      1) Подключить пролог: prolog_before.php или header.php

      Ядро подключается прологом. Если файл вызывает функции Битрикс напрямую (CModule, Loader и т. п.) — без пролога модуль main действительно «не найден».

      <?php
          // ./local/tools/my-script.php
          // ВАЖНО: корректный путь к прологу относительно DOCUMENT_ROOT
          require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
          // дальше — ваш код
          use Bitrix\Main\Loader;
          Loader::includeModule('iblock'); // пример подключения стороннего модуля
          ?>

      2) Исправить DOCUMENT_ROOT и абсолютные пути

      В CLI/CRON переменная $_SERVER['DOCUMENT_ROOT'] пустая. Нужна инициализация.

      <?php
          // ./local/cron/jobs/export.php
          $_SERVER['DOCUMENT_ROOT'] = realpath(__DIR__ . '/../../..'); 
          $_SERVER['HTTP_HOST'] = 'example.ru'; 
          define('NO_KEEP_STATISTIC', true);
          define('NOT_CHECK_PERMISSIONS', true);
          require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
          ?>

      3) Проверить наличие /bitrix/modules/main/ и права 755/644

      Права и владение — типичная причина после деплоя.

      # из корня проекта
          ls -la bitrix/modules/main
          # актуализируем права
          find bitrix/modules/main -type d -exec chmod 755 {} \;
          find bitrix/modules/main -type f -exec chmod 644 {} \;

      4) Очистить кеш: /bitrix/cache, /bitrix/managed_cache, /bitrix/stack_cache

      Поврежденный кеш может «прятать» модуль. Очистите и перезапустите PHP‑FPM.

      rm -rf bitrix/cache/* bitrix/managed_cache/* bitrix/stack_cache/*
          # для BitrixVM 9
          bx-fpm restart

      5) Не вызывать IncludeModule('main') — ядро подключается прологом

      Вызовы CModule::IncludeModule('main') и Loader::includeModule('main') не нужны. Если такой вызов присутствует — удаляем.

      6) Отключить конфликтующий vendor/autoload.php до пролога

      Composer иногда подменяет автозагрузчик. Подключайте его после пролога.

      <?php
          require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
          // Только после пролога
          require $_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php';
          ?>

      7) Запуск в CLI/CRON: задать $_SERVER vars и подключить пролог

      Проверить: путь к прологу, HTTP_HOST, таймзону, отдельный php.ini для cron.

      8) Свернуть утерянные файлы из бэкапа/репозитория

      Отсутствие include.php или version.php в /bitrix/modules/main — критично. Верните файлы из Git/архива.

      9) Обновить ядро через /bitrix/admin/update_system.php

      После частичных обновлений иногда помогает повторная установка обновлений ядра.

      10) Проверить версию PHP 8.1/8.2 и недостающие расширения

      Не хватает ext-json, intl, mbstring — модуль может «падать» при инициализации.

      Причины ошибки 'Не найден модуль main'

      Отсутствует или повреждён /bitrix/modules/main/

      Банально, но встречается после «частичной заливки» на хостинг или неудачного обновления. Без include.php ядро не поднимется.

      Скрипт выполняется в обход пролога (ajax, cron, cli)

      Самописные ajax‑точки из /local/ без пролога — классика. Проверяем, что любой код, использующий классы Битрикс, идёт после пролога.

      Неверные пути/докрут: контейнеры, chroot, symlink

      В Docker/Podman пути и DOCUMENT_ROOT отличаются. Симлинки могут указывать на отсутствующие каталоги внутри chroot. Проверьте реальный путь через realpath().

      Конфликт автозагрузчиков (Composer vs Bitrix)

      Если Composer подключён первым, он может перехватить автозагрузку и сломать find‑логику Bitrix. Порядок загрузки критичен.

      Несовместимость PHP/расширений или open_basedir

      Жёсткие ограничения open_basedir не дают читать /bitrix/modules. Отсутствующие расширения ломают инициализацию.

      Сбой обновления, частичная заливка на хостинг

      Встречали кейсы, когда при развертывании пропускалась папка lib/ или js/, из‑за .gitignore. Результат — не найден модуль.

      Проверка наличия файлов модуля

      Структура: /bitrix/modules/main/, include.php, lib/, classes/, version.php

      tree -L 2 bitrix/modules/main
          # ожидаем:
          # bitrix/modules/main/
          # ├── admin/
          # ├── classes/
          # ├── include.php
          # ├── install/
          # ├── lib/
          # ├── lang/
          # ├── options.php
          # └── version.php

      Сравнение версий и целостности с репозиторием/бэкапом

      Сверьте version.php с боевой/стендовой копией. При несовпадении — восстановить точную версию папки main.

      Права/владение, блокировки, антивирус, квоты диска

      Проверьте владельца файлов (www-data/nginx) и свободное место. Антивирусы хостеров иногда карантинят файлы.

      df -h
          chown -R www-data:www-data bitrix/modules/main
          getfacl bitrix/modules/main | head -n 20
          # Подозрения на блокировку или карантин — в техподдержку хостинга

      Правильность подключения модуля

      Рекомендуемый путь: подключение пролога до любого кода

      <?php
          // ./local/ajax/form.php
          define('STOP_STATISTICS', true);
          define('PUBLIC_AJAX_MODE', true);
          require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
          // ваш код, работа с POST и компонентами
          ?>

      Loader::includeModule для сторонних модулей, не для main

      <?php
          use Bitrix\Main\Loader;
          // Не нужно:
          // Loader::includeModule('main');
          // Нужно — для сторонних модулей:
          Loader::includeModule('iblock');
          Loader::includeModule('catalog');
          ?>

      Типовые подключения в компонентах, ajax‑точках, REST

      Компоненты, размещённые в шаблонах, подключают прологи автоматически через header.php. Самописные эндпоинты — нет, это на нашей совести.

      Антипаттерны: локальный require ядра, дублирование init

      • require 'bitrix/modules/main/include.php' напрямую — плохо;
      • двойной пролог — лишние накладные расходы;
      • подключение init.php до пролога — нарушает порядок событий.

      Восстановление модулей через консоль

      Развёртывание из бэкапа (restore.php, архив проекта, CI)

      Если модуль исчез — быстро восстановите из последнего бэкапа. В CI/CD держите артефакт с /bitrix/modules/main соответствующей версии.

      Точечное восстановление папки main соответствующей версии

      # пример восстановления только папки main из артефакта
          tar -xzf artifacts/bitrix-main-23.500.0.tar.gz -C bitrix/modules/

      Запуск обновлений: /bitrix/admin/update_system.php (при web‑доступе)

      Если админка доступна, запустите обновления ядра. При проблемах с авторизацией — временно включить отображение ошибок в локальной среде.

      Проверка версии в version.php и согласование с ядром

      <?php
          // ./bitrix/modules/main/version.php
          $arModuleVersion = [
              'VERSION' => '23.500.0',
              'VERSION_DATE' => '2024-02-15 12:00:00',
          ];

      Важно: в проектах на BitrixVM 9 проверяйте и системные обновления окружения. Иногда помогает перезапуск служб и очистка opcache перед повторной попыткой.

      Работа с autoload и init.php

      Порядок: пролог → local/php_interface/init.php → события

      <?php
          // ./local/php_interface/init.php
          use Bitrix\Main\EventManager;
          // Этот файл загружается ПОСЛЕ пролога, не раньше
          EventManager::getInstance()->addEventHandler('main', 'OnBeforeUserRegister', function (&$fields) {
              // ваши хендлеры
          });

      Регистрация классов: Loader::registerAutoLoadClasses

      <?php
          use Bitrix\Main\Loader;
          Loader::registerAutoLoadClasses(null, [
              'Rosveb\\Tools\\Exporter' => '/local/lib/Rosveb/Tools/Exporter.php',
          ]);

      Composer: подключать после пролога, без замены Bitrix autoload

      <?php
          // ./local/php_interface/init.php
          // Подключаем composer после пролога и до ваших классов
          $composer = $_SERVER['DOCUMENT_ROOT'] . '/local/vendor/autoload.php';
          if (file_exists($composer)) {
              require $composer;
          }

      Диагностика без глубокой отладки

      Проверка логов PHP/Bitrix, error_reporting, display_errors=Off

      # Веб-сервер
          tail -f /var/log/nginx/error.log
          # PHP-FPM
          tail -f /var/log/php8.1-fpm.log

      bitrix/.settings.php: включение логирования исключений

      <?php
          // ./bitrix/.settings.php
          return [
              'exception_handling' => [
                  'value' => [
                      'debug' => true,
                      'handled_errors_types' => E_ALL & ~E_NOTICE,
                      'exception_errors_types' => E_ALL & ~E_NOTICE,
                      'log' => ['class_name' => '\\Bitrix\\Main\\Diag\\FileExceptionHandler', 'settings' => ['file' => '/bitrix/logs/bitrix_exceptions.log']],
                  ],
                  'readonly' => false,
              ],
          ];

      phpinfo: пути, расширения, open_basedir, opcache

      <?php
          // ./local/tools/phpinfo.php
          phpinfo();

      После каждого технического шага сделайте короткую проверку: открывается ли главная, работает ли нужный скрипт, нет ли новых ошибок в логах.

      CLI/CRON: «битрикс ошибка не найден модуль main»

      Установка $_SERVER['DOCUMENT_ROOT'], $_SERVER['HTTP_HOST']

      <?php
          // ./local/cron/report.php
          $_SERVER['DOCUMENT_ROOT'] = realpath(__DIR__ . '/../../..'); 
          $_SERVER['HTTP_HOST'] = 'rosveb.ru'; 
          define('NO_KEEP_STATISTIC', true);
          define('NOT_CHECK_PERMISSIONS', true);
          require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
          // ... код отчёта
          ?>

      require prolog_before.php, NO_KEEP_STATISTIC, NOT_CHECK_PERMISSIONS

      Эти константы снижают накладные расходы и отключают статистику. На долгих задачах — обязательно.

      Отдельные php.ini для cron, пути в контейнерах

      # crontab -e
          * * * * * /usr/bin/php -c /etc/php/8.1/cli/php.ini /var/www/html/local/cron/report.php >/dev/null 2>&1

      В Docker прописывайте корректные volume и пути. Если /bitrix симлинкован — проверьте, куда он указывает внутри контейнера.

      Совместимость PHP и окружения (2024–2026)

      PHP 8.1–8.2, ext-json, mbstring, intl, zip, gd

      Компонент Требование Комментарий
      PHP 8.1 или 8.2 Сверяйтесь с релиз-нотами Битрикс
      Расширения json, mbstring, intl, zip, gd, xml, curl Отсутствие любого может повлиять на загрузку модуля
      Opcache Включён После деплоя — reset, чтобы избежать «залипаний»

      Opcache reset после деплоя, корректный umask

      php -r 'opcache_reset();'
          umask 022 # чтобы новые файлы не получали странных прав

      Специфические кейсы

      Мультисайт: правильный сайт‑контекст и хост

      В CLI указывайте $_SERVER['HTTP_HOST'] конкретного сайта. В противном случае контекст инициализируется неверно и часть настроек ядра не подтянется.

      Композитный режим и кеш ядра

      Композит иногда маскирует проблемы. При массовых ошибках отключите композит, очистите кеши, убедитесь, что prolog_before.php не переопределён в шаблоне.

      Реальная история: падение на «не найден модуль main» случилось из‑за того, что дев‑скрипт в /local/tools/ исполнялся кроном без DOCUMENT_ROOT. Добавили 3 строки и пролог — и проблема исчезла. Простые вещи спасают.

      Профилактика

      CI/CD с проверкой наличия /bitrix/modules/main/

      // Пример шага в CI (псевдокод)
          if (!fs.existsSync('bitrix/modules/main/include.php')) {
              throw new Error('Missing /bitrix/modules/main/include.php');
          }

      Мониторинг cron‑тасков, интеграционные smoke‑тесты пролога

      • Тест «поднимается ли пролог» — скрипт, возвращающий 200 и версию ядра;
      • Алерт на ошибки «include failed» в логах;
      • Проверка свободного места и прав перед деплоем.

      Лайфхаки

      • Храните точную копию папки main в артефактах сборки.
      • Composer подключайте после пролога — всегда.
      • Для CLI используйте bootstrap‑файл с общими установками SERVER и пролога.
      • Искать «битрикс ошибка не найден модуль main» удобно с готовым чек-листом — сохраняйте его в репозитории проекта.
      • ИИ‑модели помогают сверстать cron‑bootstrap и быстро отрефакторить точки подключения пролога.

      Диагностика без глубокой отладки

      Короткий чек‑лист

      1. Есть ли /bitrix/modules/main/include.php?
      2. Подключается ли пролог до любого кода?
      3. Задан ли DOCUMENT_ROOT в CLI/CRON?
      4. Нет ли раннего vendor/autoload.php до пролога?
      5. Права/владение корректны?
      6. Расширения PHP в наличии?
      7. Кеш и opcache очищены?

      Мини‑пример шаблона для проверки пролога

      
      <!-- ./local/templates/.default/header.php -->
          <?php
              require $_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/prolog_before.php';
          ?>
          <header>
              <div class="logo">rosveb.ru</div>
          </header>

      Риски и их минимизация

      • Риск: потеря файлов ядра при деплое. Митигирование: атомарные релизы, артефакты и «сухие» прогонки.
      • Риск: конфликт автозагрузок. Митигирование: Composer после пролога, тест в CI.
      • Риск: разные php.ini для веба и CLI. Митигирование: явное указание php.ini в crontab, phpinfo‑снимки.
      • Риск: open_basedir ограничивает /bitrix. Митигирование: добавьте нужные пути или отключите ограничение в контейнере.

      FAQ

      Можно ли «подключить модуль main» через Loader::includeModule('main')?

      Нет. Модуль main подключается прологом. Вызовы includeModule для него — избыточны и вредны.

      Почему в cron всё падало, а в браузере — нет?

      В браузере автоматом задан DOCUMENT_ROOT и подключён пролог через шаблон. В cron это делаете вы.

      Где смотреть лог исключений Битрикс?

      Если включено в bitrix/.settings.php, файл по умолчанию: /bitrix/logs/bitrix_exceptions.log.

      Нужно ли обновляться до BitrixVM 9 ради этой проблемы?

      Не обязательно. Но BitrixVM 9 упрощает управление службами и opcache, что полезно при восстановлении.

      Как проверить, что конкретно ломает автозагрузку?

      Временно закомментируйте подключение vendor/autoload.php. Если ошибка исчезла — конфликт в Composer. Переставьте порядок.

      Выводы и рекомендации

      Ошибка «Не найден модуль main» почти всегда решается быстро: пролог, корректные пути, целостность папки /bitrix/modules/main, порядок автозагрузок и актуальное окружение. Важно действовать методично и проверять результат после каждого шага — тогда и прод, и cron, и любые вспомогательные скрипты оживают без длительной отладки.

      • Сохраните чек‑лист проверки пролога и DOCUMENT_ROOT в репозитории.
      • Настройте CI для контроля целостности папки main и проверки наличия расширений PHP.
      • Подумайте о едином bootstrap для CLI: пролог + переменные окружения.
      • Если проблема не уходит — обратитесь к специалисту: быстрая ревизия окружения и кода часто экономит дни.

      Готовы помочь: разберём логи, проверим окружение, поправим автозагрузку и деплой. А пока — загляните в свои скрипты и убедитесь, что пролог действительно там, где должен быть.

      Назад к списку
      • Битрикс. SEO 3
      • Битрикс. Интересное 6
      • Битрикс. Маркетинг 10
      • Битрикс. Основа 13
      • Битрикс. Ошибки 2
      • Полезное/лайфхаки 1
      Внизу страницы
      Услуги
      Партнёры
      Блог
      Компания
      О компании
      Команда
      Документы
      Отзывы
      Вопросы и ответы
      Услуги
      Разработка сайтов
      Дизайн и брендинг
      Сопровождение сайтов
      Аудит и аналитика
      Хостинг и домены
      Информация
      Условия оплаты
      Гарантия на работы
      Вопрос-ответ
      Политика
      +7 (982) 413-33-94
      Заказать звонок
      info@rosveb.ru
      г. Краснодар, ул. Покрышкина 4/9 пом.175
      • Вконтакте
      • Telegram
      • WhatsApp
      2025 © Профессиональная разработка сайтов и комплексное SEO-продвижение.
      ИП Гуляев Алексей Григорьевич, ИНН 860225854361
      Цифровые технологии с
      Каталог
      По всему сайту
      По каталогу