应根据框架和日志系统选择对应包:Laravel 5.6+ 用 sentry/sentry-laravel,Symfony/Slim/纯 PHP 用 sentry/sentry 并手动注册,已有 Monolog 的项目补装 monolog-sentry-handler 桥接。
直接用 composer require 就能装好 Sentry PHP SDK,但默认不带日志通道集成,告警收不到 Laravel 或 Monolog 的日志——得手动配 sentry/sentry-laravel 或桥接 monolog-sentry-handler。
别直接 composer require sentry/sentry,那是纯底层 SDK,没自动捕获、没日志绑定。实际项目要分情况:
composer require sentry/sentry-laravel,它自带异常拦截 + 日志通道 + Artisan 命令
/ 纯 PHP:用 composer require sentry/sentry + 手动注册错误处理器
composer require monolog/monolog sentry/sentry,再加 monolog-sentry-handler 桥接器SENTRY_DSN 不只是贴链接就完事,环境变量、初始化时机、上下文隔离都影响上报效果:
.env 里(Laravel)或启动早期(如 index.php 开头),不能等路由加载完才 initenvironment 字段,否则测试服错误混进生产看板:SENTRY_ENVIRONMENT=production
Sentry\init(),否则后台任务的异常不上报装了 sentry/sentry-laravel 后,storage/logs/laravel.log 里的错误仍不触发 Sentry 告警,大概率是日志通道没走 Sentry Handler:
config/logging.php 中 stack 或 single 通道里包含 sentry:'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single', 'sentry'],
],
'sentry' => [
'driver' => 'sentry',
],
]Monolog\Handler\StreamHandler 并直接 new 实例,会绕过 Laravel 的 Sentry Handler,必须用 tap 或改用 createLogger
App\Exceptions\Handler::report() 里加 \Sentry\captureException($exception),验证 DSN 是否有效真正卡住人的不是安装命令,而是 DSN 初始化太晚、日志通道没挂载、CLI 环境没重 init —— 这三处一错,看着装好了,其实一条告警都不会发出去。