esportscz/sentry
Opinionated Sentry bootstrap for PHP apps, CLI scripts, workers & Nette framework - consistent tags, async flush, Tracy bridge with debug panel, env-based config.
Maintainers
Requires
- php: ^7.2 || ^8.0
- ext-json: *
- sentry/sentry: ^4.0
Requires (Dev)
- nette/tester: ^2.4
- orisai/coding-standard: ^3.0
- phpstan/phpstan: ^1.0
Suggests
- nette/application: Required for Nette Application presenter context integration
- nette/di: Required to use SentryExtension for neon-based configuration
- nette/http: Required for Nette Session integration (session ID tag enrichment)
- nette/security: Required for Nette Security user identity integration
- tracy/tracy: Required to use SentryLogger and MultiLogger Tracy bridge
Provides
None
Conflicts
None
Replaces
None
MIT 6006be97e18b788e74e0947e52a5ac238127926b
- eSports.cz, s.r.o.
- Michal Pospiech <michal.woop@pospiech.cz>
phpclibootstrapmonitoringnettesentrytracyerror-reportingerror-trackingdebug-panelasync-flushglitchtiptracy-bar
README
Opinionated Sentry bootstrap for plain PHP apps, legacy codebases, CLI scripts, cron jobs, workers, and Nette Framework applications.
If DSN is missing or Sentry is disabled, initialization becomes a safe no-op.
What This Package Provides
- One unified
Bootstrap::init()for web + CLI (non-Nette). - Common, consistent tags and metadata (
service,project,stack, PHP info, git commit, memory limit). - Non-blocking async flush by default - on PHP-FPM the HTTP response is sent before Sentry flushes, so errors never add latency to the user-facing request.
- Configuration via environment variables, with optional per-key overrides in code.
- Safe
context_providerhook - never blocks reporting if it throws. flush()helper for short-lived processes (CLI jobs, cron, workers).- Nette Framework integration - DI extension, Tracy bridge, presenter/user/session enrichment, performance monitoring.
- Tracy Bar panel - real-time Sentry status, configuration overview, and captured events in the Tracy debug bar. Fully configurable via neon.
Installation
composer require esportscz/sentry
Quick Start
Plain PHP
use eSportsCZ\Sentry\Bootstrap;
Bootstrap::init([
'service' => 'my-service', // treat as required
'project' => 'my-project',
'stack' => 'php',
]);
Nette
extensions:
sentry: eSportsCZ\Sentry\Nette\SentryExtension
sentry:
dsn: %env.SENTRY_DSN%
service: my-service
project: my-project
stack: php
No PHP bootstrap changes needed - the extension handles initialization automatically.
Documentation
- Configuration Reference - all config keys, env vars, defaults, automatic tags
- Nette Integration - DI extension, Tracy bridge, Application/Security/Session integrations, performance monitoring
- Helper Methods -
setUser,tag,flush,configureScope,context_provider - Troubleshooting - common issues, server saturation, timeout tuning
- Examples - full implementation examples for web, CLI, Nette, and worker
Requirements
- PHP
^7.2 || ^8.0(tested up to PHP 8.4) sentry/sentry ^4.0
Nette integration requires PHP ^8.1 and nette/di ^3.2.
Versioning (SemVer)
- MAJOR - breaking API changes and/or a PHP version bump
- MINOR - backward-compatible features
- PATCH - backward-compatible bug fixes
See CHANGELOG.md for a full history of changes.
Contributing
Anyone can open a Pull Request. Please tag @michalpospiech as reviewer.
