An open API service indexing awesome lists of open source software.

https://github.com/webpractik/webpractik.sentry

Module for sending Bitrix PHP errors to Sentry
https://github.com/webpractik/webpractik.sentry

bitrix sentry

Last synced: 12 months ago
JSON representation

Module for sending Bitrix PHP errors to Sentry

Awesome Lists containing this project

README

          

# webpractik.sentry

## Описание

Модуль для отправки PHP ошибок Bitrix в Sentry
Класс модуля отнаследован от Bitrix\Main\Diag\FileExceptionHandlerLog

## Требования

- Composer
- Версия PHP >= 7.2

## Установка

Установка пакета
```bash
composer require webpractik/sentry
```

## Настройка

### Подключение composer autoload

В файле `init.php` требуется подключить composer autoload, если этого еще не сделано

```php
require_once($_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php');
```

### Определение переменных

Для установки окружения и URL sentry в .env файле нужно определить две переменные:

```dotenv
APP_ENV=production
SENTRY_DSN=https://@sentry.io/
```

> Чтобы при разработке на локальной версии сайта ошибки не отправлялись в Sentry, нужно в переменной APP_ENV указать значение 'local'. На production-сервер должно быть установлено 'production'

### Получение переменных из .env файла

Вместе с пакетом зависимостью устанавливается библиотека `vlucas/phpdotenv`, посредством которой можно получить переменные из `.env` (по умолчанию) файла

Для этого в `init.php` нужно прописать:

```php
if (class_exists('Dotenv\\Dotenv')) {
$env = Dotenv\Dotenv::createImmutable($_SERVER['DOCUMENT_ROOT']);
// Если на проекте используется другое имя файла, его можно задать вторым параметром
// пример, $env = Dotenv\Dotenv::createImmutable($_SERVER['DOCUMENT_ROOT'], '.environment');
try {
$env->load();
} catch (InvalidFileException | InvalidPathException $e) {
}
}
```

В метод `createImmutable` нужно указать путь к файлу .env (или .environment)

> В примере указана проверка на существование класса Dotenv, чтобы при первом деплое на production-сервер не вызвать ошибку (пока не отработает composer install)

**Если у вас уже установлен Laravel**, то может возникнуть ошибка конфликта версий пакета `vlucas/phpdotenv`, проверьте что установили подходящий.
Подключение для старой (^3.3) версии пакета тоже отличается:
```php
if (class_exists('Dotenv\\Dotenv')) {
$env = Dotenv\Dotenv::create($_SERVER['DOCUMENT_ROOT']); // изменение тут, в старой версии нет метода createImmutable
// Если на проекте используется другое имя файла, его можно задать вторым параметром
// пример, $env = Dotenv\Dotenv::create($_SERVER['DOCUMENT_ROOT'], '.environment');
try {
$env->load();
} catch (InvalidFileException | InvalidPathException $e) {
}
}
```

### Настройка Bitrix

Чтобы наш обработчик перехватывал ошибки, нужно его прописать в файле `bitrix/.settings.php`, в секцию
`[exception_handling][value][log]`

```
'class_name' => '\\Webpractik\\Sentry\\SentryException'
```

Например:

```
'exception_handling' =>
array (
'value' =>
array (
'debug' => ,
'handled_errors_types' => ,
'exception_errors_types' => ,
'ignore_silence' => ,
'assertion_throws_exception' => ,
'assertion_error_type' => ,
'log' =>
array (
'settings' =>
array (
'file' => '/error.log',
'log_size' => ,
),
'class_name' => '\\Webpractik\\Sentry\\SentryException',
),
),
'readonly' => ,
),
```

## Миграция с версии 1.0

1. Удалить ключи `extension` и `required_file` из файла `bitrix/.settings.php`
2. В `class_name` изменить класс на `'\\Webpractik\\Sentry\\SentryException'`
3. Деактивировать и удалить модуль в админ панели
4. В файле `composer.json` изменить версию пакета `webpractik/sentry` на ^2.0
5. Выполнить в консоли `composer update webpractik/sentry`
6. Сбросить кеш загрузчика composer, если возникнут ошибки `composer dump-autoload`