symfony/profiler-pack
Symfony Profiler Pack integrates the Symfony Profiler and Web Debug Toolbar into your app, giving detailed request/response insights, performance metrics, logs, and debugging panels. Ideal for local dev and troubleshooting during development.
Installation:
composer require symfony/profiler-pack
web_profiler bundle in config/bundles.php.First Use Case:
/_profiler/ (or /_wdt for Web Debug Toolbar) after a request.doctrine/doctrine-bundle is installed)Key Files to Review:
config/packages/dev/web_profiler.yaml (default configuration).var/cache/dev/app_profiler.php (generated profiler data).Debugging Requests:
?_profiler=1).?_error_handler=1 to see uncaught exceptions in detail.Custom Data Collectors:
Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface:
// src/DataCollector/MyCollector.php
class MyCollector implements DataCollectorInterface {
public function collect(Request $request, Responder $responder, \Exception $exception = null) {
$this->data['custom_metric'] = microtime(true);
}
public function getName() { return 'my_collector'; }
public function get() { return $this->data; }
}
config/services.yaml:
services:
App\DataCollector\MyCollector:
tags: ['data_collector']
Integration with Tests:
Symfony\Bundle\DebugBundle\DataCollector\RouterDataCollector in PHPUnit:
$client = static::createClient();
$client->request('GET', '/');
$profiler = $client->getProfile();
$this->assertEquals(200, $profiler->getResponse()->getStatusCode());
Performance Profiling:
memory tab for leaks (e.g., during bulk operations).Environment-Specific Setup:
config/packages/prod/web_profiler.yaml):
web_profiler: false
Performance Overhead:
# config/packages/prod/web_profiler.yaml
web_profiler: false
stoplight: false
Caching Issues:
php bin/console cache:clear
var/cache/dev/app_profiler.php (delete manually if corrupted).Router Conflicts:
/_profiler or /_wdt (profiler routes are auto-registered)._profiler as a query parameter (?_profiler=1) instead of a route.Doctrine DataCollector Missing:
doctrine/doctrine-bundle and doctrine/orm:
composer require doctrine/doctrine-bundle
CSRF Token Errors:
/_profiler in config/packages/security.yaml:
access_control:
- { path: ^/_profiler, roles: IS_AUTHENTICATED_ANONYMOUSLY }
Enable Verbose Logging:
php bin/console debug:config symfony.web_profiler
web_profiler.enabled and stoplight.enabled.Inspect Collectors:
php bin/console debug:container --tag=data_collector
Profiler Not Showing:
APP_ENV=dev in .env.var/cache/dev/app_profiler.php exists (regenerate with cache:clear).Custom Collector Not Displaying:
collect(), getName(), get()).Override Profiler Templates:
vendor/symfony/web-profiler-bundle/Resources/views/ to templates/bundles/webprofiler/ and override (e.g., toolbar.html.twig).Add Profiler to API Responses:
Symfony\Component\HttpFoundation\Response::setProfilerData():
$response = new Response();
$response->setProfilerData(['custom' => 'data']);
Integrate with Blackfire:
blackfire/php-profiler and configure web_profiler to use Blackfire’s data:
web_profiler:
blackfire: true
Custom Profiler Storage:
Symfony\Component\HttpKernel\DataCollector\Storage\PhpFileStorage to log data to a database or external service.How can I help you explore Laravel packages today?