8 (495) 118-30-48
По будням с 11:00 до 19:00 (МСК+5)
← Вернуться назад

Sentry.io: обработка ошибок

Пётр Мишаков
Битрикс-программист

Ошибки при обработке запросов могут привести к негативному отношению со стороны покупателей на сайте или сотрудников CRM вашей компании. С помощью модуля «Sentry.io: трекер ошибок и монитор производительности» вы сможете записывать ошибки, группировать схожие и получать уведомления о появлении проблем. Информация об ошибке поможет разработчикам сайта исправить проблему и сформировать обращение в техподдержку 1С-Битрикс.

Особенностью модуля от нашей компании является поддержка стандартного окружения BitrixVM. Вам не потребуется вносить изменения в конфигурацию сервера с современными версиями 1С-Битрикс для мониторинга ошибок.

Сегодня разберем примеры ошибок, с которыми можете столкнуться.

Переход к PHP 8

Ошибка при обновлении Битрикс до PHP 8

При переходе к версии PHP 8 усилен контроль типов аргументов встроенных функций. Шаблоны и компоненты, разработанные для более старых версий PHP, могут не учитывать граничные ситуация отсутствия данных. Например, товары без изображений или под заказ.

Примеры сообщений:

  • array_keys(): Argument #1 ($array) must be of type array, null given
  • count(): Argument #1 ($value) must be of type Countable|array, null given
  • array_key_exists(): Argument #2 ($array) must be of type array, null given
  • in_array(): Argument #2 ($haystack) must be of type array, null given
  • array_merge(): Argument #2 must be of type array, bool given
  • Cannot access offset of type string on string

Для решения потребуется адаптировать код шаблона к современным требованиям.

Нужна помощь в адаптации шаблона →

Падение базы данных и кеша

Ошибка при проблемах Битрикса с MySQL

При достижении ограничения оперативной памяти и объема дискового пространства процесс базы данных MySQL может стать недоступен, что приведет к фатальному исключению создания страницы. При использовании кеша в Memcached или Redis в случае падения сайт продолжит работу, но время формирования создания страницы увеличиться.

Примеры сообщений:

  • Mysql connect error [localhost]: (2002) Connection refused
  • Mysql connect error [localhost]: (2006) MySQL server has gone away
  • Memcache::pconnect(): Can't connect to unix:///tmp/memcached.sock:0, Connection failed: Connection refused (111)

Для решения потребуется проанализировать распределение ресурсов сервера, внести изменения в конфигурацию.

Требуется починить сервер →

Ошибки призраки

Исключения при попытке записи ошибки в лог и при окончании буферизации могут отображаться в виде пустой страницы, что приводит к сложностям в отладке. Проблему обновления пакета psr/log разобрали в отдельной статье.

Сообщение об ошибке «ob_start(): Cannot use output buffering in output buffering display handlers» часто является свидетельством двух ошибок:

  • Использования буферизации внутри Отложенных функций или обработчиках события OnEndBufferContent.
  • Исключение на странице, которое вызвало экстренное завершение буферизации.

Примеры сообщений:

  • Declaration of Bitrix\Main\Diag\Logger::log($level, Stringable|string $message, array $context = []): void must be compatible with Psr\Log\LoggerInterface::log($level, $message, array $context = []) in ..../bitrix/modules/main/lib/diag/logger.php
  • ob_start(): Cannot use output buffering in output buffering display handlers

Нужно разобраться с ошибками сайта →

В онлайне 8 программистов
Золотой
партнёр
Битрикса
9 лет
на рынке
Реагируем
в течение
30 минут
30
человек
в штате

Золотой
партнёр
Битрикса

9 лет
на рынке

Реагируем
в течение
30 минут

Блог