Download the PHP package php-bug-catcher/skeleton without Composer
On this page you can find all versions of the php package php-bug-catcher/skeleton. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download php-bug-catcher/skeleton
More information about php-bug-catcher/skeleton
Files in php-bug-catcher/skeleton
Package skeleton
Short Description Project template for starting your new project based on the Bug Catcher
License MIT
Homepage https://github.com/php-bug-catcher/bug-catcher
Informations about the package skeleton
Catch every bug in all your PHP applications in one place
This is the project template for a Bug Catcher instance: a Symfony application that collects the errors your other applications report, deduplicates them, shows them on a dashboard and notifies you about the ones that matter. Your applications talk to it over HTTP; it is not a bundle you install into them.
Requirements
- PHP 8.4 or newer
- MySQL 8.0+ or MariaDB 10.6+, with
ONLY_FULL_GROUP_BYoff. Not a preference: the dashboard sparkline andapp:record-optimizerbucket byDATE_FORMAT()/SEC_TO_TIME(), and the performance ingest upserts withINSERT ... ON DUPLICATE KEY UPDATEand reads the row back withLAST_INSERT_ID(). PostgreSQL and SQLite have none of that. The bundledcompose.yamlstarts a server configured correctly; on your own server, setsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION. - Node and Yarn, for the (small) Encore build of the application's own assets.
Installation
Point DATABASE_URL at your database in .env.local (or start the bundled one with
docker compose up -d, which writes it for you through the Symfony CLI), then:
Open the site, sign in, and add a project under /admin → Projects. The code you give it is
the projectCode your applications send. Add yourself to the project's users, or its row will not
appear on your dashboard.
Then install a reporter in the application you want to watch - see php-bug-catcher/bug-catcher-reporter - or post to the API yourself:
Cron
Nothing below is optional if you want the feature next to it:
With performance monitoring in use (see below), also:
The roll-up is what fills in anything wider than two hours: /performance reads minutes up to two
hours and hours up to seven days, so without the hourly job those views stay empty while the minute
rows sit in the table.
What is configured here, and why
Everything in config/ is yours to edit. These are the parts Bug Catcher depends on, each with the
reason written next to it in the file:
| File | Why |
|---|---|
config/packages/bug_catcher.yaml |
Dashboard panels, logo, refresh interval, MCP, performance. Every key is a default written out; php bin/console config:dump-reference bug_catcher has the rest. |
config/packages/doctrine.yaml |
enable_native_lazy_objects: true (the bundle has a final entity, which no generated proxy can subclass) and the TYPE DQL function. |
config/packages/security.yaml |
The user provider, the /api and /mcp firewalls, the access control list and the role hierarchy. |
config/packages/csrf.yaml |
Session CSRF, not stateless: a stateless token is filled in by a Stimulus controller from the application's own asset build, and these pages are rendered from the bundle's. |
config/packages/mcp.yaml, config/routes/mcp.yaml |
The MCP server at /mcp. |
config/routes/persistent_state.yaml |
The log list's "select all" buttons post to a route from tito10047/persistent-state-bundle. |
config/packages/ux_icons.yaml |
iconify.on_demand: false, so a missing icon is an error here rather than a request to api.iconify.design on every page view. |
config/packages/webpack_encore.yaml |
The second bug_catcher build, which is where the dashboard's CSS and JS come from. |
assets/icons/ |
Every icon the dashboard draws, committed. Add one with php bin/console ux:icons:import <set>:<name>. |
Optional: performance monitoring
Per-request wallclock, CPU, memory and status, collected on the machine you want to measure by
php-bug-catcher/perf-collector and shipped here
once a minute. Nothing happens until something posts to /api/perf_buckets.
Turn the Perf enabled checkbox on for a project in /admin to give its dashboard row latency
columns instead of only an error count, and add the perf cron jobs above. /performance has the
charts.
Optional: the MCP server
/mcp lets an AI client read the collected errors and resolve them. Set MCP_ACCESS_TOKEN to a
long random string in .env.local and name your own host in MCP_ALLOWED_HOSTS; with the token
unset every request is refused. See
docs/mcp.md.
Installing into an existing application instead
Then copy the configuration out of
config/recipes/ in the
bundle - packages/ into your config/packages/ and routes/ into your config/routes/, merging
with what you already have - register BugCatcher\BugCatcherBundle and
Symfony\AI\McpBundle\McpBundle in config/bundles.php, and import the icons listed in
assets/icons/ here. The checklist that this repository is kept honest against lives in the bundle
at tests/skeleton/;
reading e2e.sh is the fastest way to see what a complete installation has to answer to.
Extending it
- docs/custom_record.md - your own record type
- docs/notifiers.md - your own notifier
- docs/custom_perf_metric.md - your own performance metric
- docs/extending.md - the CSS classes a custom component can use
All versions of skeleton with dependencies
ext-ctype Version *
ext-iconv Version *
doctrine/dbal Version ^3
doctrine/doctrine-bundle Version ^2.13
doctrine/doctrine-migrations-bundle Version ^3.3
doctrine/orm Version ^3.2
php-bug-catcher/bug-catcher Version ^1.0
phpdocumentor/reflection-docblock Version ^5.4
phpstan/phpdoc-parser Version ^1.30
symfony/asset Version 7.4.*
symfony/console Version 7.4.*
symfony/dotenv Version 7.4.*
symfony/expression-language Version 7.4.*
symfony/flex Version ^2
symfony/form Version 7.4.*
symfony/framework-bundle Version 7.4.*
symfony/http-client Version 7.4.*
symfony/intl Version 7.4.*
symfony/mailer Version 7.4.*
symfony/mime Version 7.4.*
symfony/monolog-bundle Version ^3.0
symfony/notifier Version 7.4.*
symfony/process Version 7.4.*
symfony/property-access Version 7.4.*
symfony/property-info Version 7.4.*
symfony/runtime Version 7.4.*
symfony/security-bundle Version 7.4.*
symfony/serializer Version 7.4.*
symfony/stimulus-bundle Version ^2.19
symfony/string Version 7.4.*
symfony/translation Version 7.4.*
symfony/twig-bundle Version 7.4.*
symfony/ux-turbo Version ^2.19
symfony/validator Version 7.4.*
symfony/web-link Version 7.4.*
symfony/yaml Version 7.4.*
twig/extra-bundle Version ^2.12|^3.0
twig/twig Version ^v3.26.0