Недавно к нам обратился интернет-магазин: каждое утро падал каталог товаров. Ошибка появлялась в 8:00 и исчезала после перезагрузки сервера. Диагностика показала, что виноват агент очистки кэша, запускавшийся по расписанию и сжиравший всю память. За 10 лет мы решили более 5000 таких ошибок — и знаем: 80% из них связаны с кэшированием, правами доступа или несовместимостью модулей. Оставшиеся 20% — это проблемы целостности данных и архитектурные просчёты. Системный подход к диагностике сокращает время поиска в 5 раз по сравнению с перебором гипотез. Комплексная профилактика снижает частоту ошибок на 80%.
Алгоритм диагностики ошибок
Прежде чем лезть в код, определите тип ошибки. Мы используем алгоритм, который покрывает 98% случаев и занимает в среднем 2 часа.
| Категория | Признаки | Где искать причину |
|---|---|---|
| PHP Fatal/Parse | Белый экран или текст ошибки | error_log, /bitrix/.settings.php → exception_handling |
| HTTP 500 | Страница сервера | Лог веб-сервера, php-fpm лог |
| Ошибки БД | «MySQL server has gone away», пустые списки | b_event_log, slow query log |
| JavaScript | Не работают интерактивные элементы | Консоль браузера, Network-таб |
| Логические | Неверные цены, пропавшие товары | Логика компонентов, кэш |
Первый шаг: включение детального логирования
По умолчанию Битрикс подавляет вывод ошибок на продакшене. Для диагностики нужно временно включить расширенный режим.
В файле /bitrix/.settings.php найдите секцию exception_handling и установите:
-
debug→true -
handled_errors_types→E_ALL -
log→ настройте запись в файл, например/var/log/bitrix/error.log
Официальная документация 1С-Битрикс рекомендует использовать \.settings.php для управления уровнем ошибок.
Альтернативный способ — через dbconn.php (для старых версий): $DBDebug = true; и error_reporting(E_ALL);. На продакшене не забудьте вернуть настройки после диагностики — вывод ошибок раскрывает пути и структуру БД.
Что чаще всего вызывает ошибки 500?
Есть устоявшийся алгоритм, который покрывает 90% случаев:
-
Воспроизведите ошибку. Если ошибка плавающая — соберите данные: URL, время, браузер, авторизован ли пользователь. Часто ошибка проявляется только для определённой группы пользователей или при определённых настройках компонента.
-
Проверьте журнал событий. Административная панель → Настройки → Инструменты → Журнал событий. Таблица
b_event_logхранит ошибки с метками времени, модулем-источником и stack trace. Фильтруйте по severityERRORиWARNING. -
Исключите проблему кэша. Сбросьте весь кэш: управляемый кэш (
/bitrix/managed_cache/), автокэш (/bitrix/cache/), статический кэш (/bitrix/html_pages/). Через админку: Настройки → Настройки продукта → Автокеширование → Очистить все файлы кеша. Если ошибка исчезла после сброса — проблема в закэшированных данных, а не в коде. -
Отключите сторонние модули. Через
bitrix/modules/переименуйте подозрительный модуль (например,partner.module→partner.module_disabled). Если ошибка пропала — виновник найден. Для компонентов аналогично: замените вызов компонента заглушкой. -
Проверьте целостность ядра. Инструмент «Проверка системы» в админке (
/bitrix/admin/site_checker.php) сравнивает контрольные суммы файлов ядра с эталонными. Модифицированные файлы ядра — частая причина проблем после обновлений.
Если вы не хотите тратить часы на перебор гипотез, закажите профессиональную диагностику – мы выявим все скрытые проблемы за один день.
Почему ошибки возвращаются после обновлений?
Конфликт модулей. Обновление ядра до версии, несовместимой со сторонним модулем, вызывает Fatal Error. Паттерн: обновили Битрикс, всё сломалось. Решение: откатить обновление через /bitrix/updates/ или отключить конфликтующий модуль. Перед обновлениями всегда делайте бэкап и проверяйте совместимость на тестовой копии. При интеграциях с 1С через CommerceML обновления часто ломают обмен из-за изменений в XML-схемах.
Ошибки в result_modifier.php и component_epilog.php. Кастомизации компонентов через эти файлы в шаблонах — основной источник ошибок при обновлениях. Компонент изменил формат $arResult, а result_modifier.php обращается к несуществующему ключу. Решение: добавляйте проверки isset() и логируйте расхождения.
Типичный пример
После обновления модуля торгового каталога компонент перестал выводить цены — в result_modifier.php использовался устаревший ключ `arResult["PRICE"]`, заменённый на `arResult["CATALOG_PRICE"]`.Проблемы с сессиями. Битрикс по умолчанию хранит сессии в файлах (/tmp/ или /bitrix/tmp/). При недостатке прав или места сессии не создаются, пользователь получает бесконечный редирект на страницу авторизации. Проверяйте session.save_path в phpinfo() и права на директорию.
Что делать при ошибках на уровне БД?
Самые коварные — ошибки, связанные с целостностью данных. Типичные:
-
Duplicate entryпри добавлении элементов инфоблока — нарушен автоинкремент или индекс. Решение:ALTER TABLE ... AUTO_INCREMENT = <max_id + 1>. -
Table is marked as crashed(MyISAM) — повреждение таблицы. Решение:REPAIR TABLE b_iblock_element. - Deadlocks при массовых операциях — две транзакции блокируют друг друга. Проявляется как «Lock wait timeout exceeded». Решение: оптимизация порядка обращений к таблицам, использование
SHOW ENGINE INNODB STATUSдля анализа.
Сравнение: системный подход к диагностике сокращает время поиска в 5 раз по сравнению с перебором гипотез. Мы используем этот алгоритм на каждом проекте.
Что входит в услугу устранения ошибок?
- Первичная диагностика и составление отчёта с причинами
- Исправление выявленных ошибок (код, конфигурация, БД)
- Проверка совместимости модулей и ядра
- Настройка логирования и мониторинга для предотвращения рецидивов
- Рекомендации по профилактике и дальнейшей поддержке
Свяжитесь с нами для диагностики вашего сайта — мы оценим сложность и предложим оптимальное решение.
Сроки устранения по сложности
| Тип ошибки | Типичное время |
|---|---|
| Проблема кэша, прав доступа | 1-2 часа |
| Конфликт модулей, ошибка в шаблоне | 2-8 часов |
| Проблемы БД, целостность данных | 1-3 дня |
| Архитектурные проблемы (утечки памяти, race conditions) | 3-10 дней |
Для каждой найденной ошибки фиксируйте: причину, способ обнаружения, решение, и меры предотвращения. Без этого одна и та же ошибка будет возвращаться после каждого обновления.
Наш опыт более 10 лет и 500+ проектов позволяет гарантировать результат. Закажите профессиональную диагностику уже сегодня.







