ale10257/error-message-yii2
Composer 安装命令:
composer require ale10257/error-message-yii2
包简介
Yii2 component for sending error messages via pluggable messenger (email, Slack, etc.)
README 文档
README
Yii2-компонент для отправки сообщений об ошибках в фоне через queue:
- в бот (любой клиент с интерфейсом
IErrorBot); - на email через стандартный
Yii::$app->mailer.
Требования
- PHP 7.4+
- В приложении при старте должна загружаться переменные окружения из
.env(например черезvlucas/phpdotenv). Компонент ожидает, что конфиг уже использует$_ENVдля токенов и chat id.
Установка
composer require ale10257/error-message-yii2
Подключение в конфиге
1. Компонент sendErrorMessage
В конфиг приложения (например config/web.php или config/common.php) добавьте компонент:
'components' => [ 'queue' => [ 'class' => \yii\queue\file\Queue::class, 'path' => '@runtime/queue', ], 'sendErrorMessage' => [ 'class' => \ale10257\sendError\ErrorMsgComponent::class, 'queueComponentId' => 'queue', 'enableBotError' => (int)($_ENV['ENABLE_BOT_ERROR']) === 1, 'enableEmailError' => (int)($_ENV['ENABLE_EMAIL_ERROR']) === 1, 'emailRecipients' => [ (string)$_ENV['ADMIN_EMAIL'], (string)$_ENV['PROCTOLEHA_EMAIL'], ], 'client' => [ 'class' => \YourNamespace\YourMessenger::class, // реализация IErrorBot 'apiKey' => $_ENV['YOUR_MESSENGER_API_KEY'], 'chatId' => $_ENV['YOUR_MESSENGER_CHAT_ID'], ], 'useQueue' => true, 'errorCodeMap' => [ \yii\web\NotFoundHttpException::class => 404, \yii\web\ForbiddenHttpException::class => 403, ], ], ],
- client — объект, реализующий
\ale10257\sendError\IErrorBot(методsendErrorMsg(string $message): void). - useQueue — если
true, отправка сообщений выполняется черезYii::$app->queueи не блокирует веб-запрос. - queueComponentId — id компонента очереди (по умолчанию
queue). - enableBotError — включает/выключает отправку в бот.
- enableEmailError — включает/выключает отправку email.
- emailRecipients — список email-получателей сообщений об ошибках.
- errorCodeMap — соответствие «класс исключения → HTTP-код». Исключения с кодами из этого маппинга (404, 403 и т.д.) в мессенджер не отправляются; отправляются только «неизвестные» (например 500).
Запуск воркера очереди
После включения useQueue нужен запущенный воркер:
php yii queue/listen --verbose=1
Переменные окружения
ENABLE_BOT_ERROR=1 ENABLE_EMAIL_ERROR=1 ADMIN_EMAIL=admin@example.com PROCTOLEHA_EMAIL=proctoleha@example.com SMTP_USERNAME=robot@example.com
SMTP_USERNAME используется как from при отправке email.
Тема письма по умолчанию: Application Error Alert.
2. Обработчик исключений приложения
Чтобы необработанные исключения уходили в мессенджер, подключите ErrorHandler пакета:
// config/web.php 'components' => [ 'errorHandler' => [ 'class' => \ale10257\sendError\ErrorHandler::class, ], // ... ],
Примеры использования
Отправка произвольного текста
\Yii::$app->sendErrorMessage->send('Критическая ошибка: сервис недоступен');
Логирование с отправкой в мессенджер
Класс LogError пишет в лог и при необходимости отправляет сообщение через компонент:
use ale10257\sendError\LogError; try { // ... } catch (\Throwable $e) { LogError::error('Ошибка при обработке заказа', $e, false); }
В dev-окружении (YII_ENV === 'dev') исключение можно пробрасывать дальше: третий параметр true — тогда в dev будет выброшен exception, а не только лог и мессенджер.
Какую точку входа использовать
- Необработанное исключение: ничего вручную не вызывайте — если в конфиге подключён
\\ale10257\\sendError\\ErrorHandler, он сам перехватит исключение и отправит сообщение. - “Мягкая” ошибка (исключение поймали и обработали): используйте
LogError::error(...), потому что глобальныйErrorHandlerв этом случае не сработает.
Интерфейс бота
Любая реализация должна реализовать \ale10257\sendError\IErrorBot:
namespace YourNamespace; use ale10257\sendError\IErrorBot; class YourMessenger implements IErrorBot { private string $apiKey; private string $chatId; public function __construct(string $apiKey, string $chatId) { $this->apiKey = $apiKey; $this->chatId = $chatId; } public function sendErrorMsg(string $message): void { // POST в API your-messenger (или другой сервис) } }
В конфиге такой класс подставляется в sendErrorMessage.client.
ale10257/error-message-yii2 适用场景与选型建议
ale10257/error-message-yii2 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 27 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 02 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 ale10257/error-message-yii2 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ale10257/error-message-yii2 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 27
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 30
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-19