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
- Host: GitHub
- URL: https://github.com/webpractik/webpractik.sentry
- Owner: webpractik
- Created: 2019-07-05T13:06:19.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-08-12T08:50:08.000Z (over 1 year ago)
- Last Synced: 2025-04-13T12:48:51.497Z (about 1 year ago)
- Topics: bitrix, sentry
- Language: PHP
- Homepage:
- Size: 20.5 KB
- Stars: 17
- Watchers: 0
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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`