fruitcake/laravel-debugbar
Integrate PHP Debug Bar into Laravel to inspect requests in real time. Shows executed queries, routes, views, logs, cache/events, and timing/memory metrics with an in-browser toolbar and detailed panels. Great for profiling and debugging during development.
Installation:
composer require fruitcake/laravel-debugbar --dev
Enable Debug Mode:
Set APP_DEBUG=true in .env to enable the debugbar automatically.
First Use Case:
/ or run php artisan tinker).Debugging Requests:
config/debugbar.php:
'capture_ajax' => true,
'ajax_handler_auto_show' => true,
Performance Profiling:
start_measure()/stop_measure() or the Debugbar facade:
Debugbar::startMeasure('render', 'Time to render view');
// ... logic ...
Debugbar::stopMeasure('render');
measure('query', function () {
User::all();
});
Logging Custom Data:
Debugbar::info('User loaded', ['id' => $user->id]);
Debugbar::error(new \Exception('Failed to save'));
debug($variable); // Dumps to debugbar
collect([1, 2, 3])->debug();
Job Debugging:
config/debugbar.php:
'collect_jobs' => true,
Console Debugging:
$debugbar = app('debugbar');
$debugbar->enable();
// ... command logic ...
Conditional Debugbar:
config/debugbar.php:
'except' => ['api/*', 'admin/*'],
if (auth()->check()) {
debugbar()->disable();
}
Custom Collectors:
maximebf/debugbar-extensions):
Debugbar::addCollector(new \DebugBar\DataCollector\TimeDataCollector());
DebugBar\DataCollector\BaseCollector.Editor Integration:
'remote_sites_path' => '/home/vagrant/Code',
'local_sites_path' => '/Users/you/Projects',
DEBUGBAR_EDITOR=vscode).Twig Integration:
config/twigbridge.php:
'extensions' => [
Fruitcake\LaravelDebugbar\Twig\Extension\Debug::class,
Fruitcake\LaravelDebugbar\Twig\Extension\Dump::class,
],
{{ dump(user) }}
Storage Configuration:
'storage' => [
'driver' => 'redis',
'connection' => 'cache',
],
'storage' => [
'open' => function ($request) {
return $request->ip() === '127.0.0.1';
},
],
Performance Overhead:
APP_DEBUG=false).collect_jobs in high-traffic queues; it logs every job execution.Storage Leaks:
storage.open in shared environments (e.g., staging/production).php artisan debugbar:clear
AJAX Conflicts:
capture_ajax if AJAX requests fail or time out:
'capture_ajax' => false,
X-Requested-With: XMLHttpRequest or Accept: application/json.Editor Links:
Collector Conflicts:
CacheCollector) may require additional setup (e.g., cache:table migrations).Missing Debugbar:
APP_DEBUG=true and no except rules block the route.Empty Tabs:
hide_empty_tabs to hide collectors with no data:
'hide_empty_tabs' => true,
Debugbar::addMessage()).Storage Issues:
storage/debugbar directory is writable:
mkdir -p storage/debugbar && chmod -R 775 storage/debugbar
config/database.php.Facade Not Found:
AppServiceProvider:
\Illuminate\Foundation\AliasLoader::getInstance()->alias('Debugbar', \Fruitcake\LaravelDebugbar\Facades\Debugbar::class);
Octane Compatibility:
Custom Collectors:
DebugBar\DataCollector\BaseCollector and register via:
Debugbar::addCollector(new MyCustomCollector());
Middleware Integration:
public function handle($request, Closure $next) {
Debugbar::info('Middleware executed', ['user' => auth()->user()]);
return $next($request);
}
Event Listeners:
public function handle(JobProcessed $event) {
Debugbar::addMessage('Job processed', ['job' => $event->job]);
}
Theme Customization:
public/css/debugbar.css or use the DEBUGBAR_THEME env var:
DEBUGBAR_THEME=dark
ServerTiming Headers:
'add_ajax_timing' => true,
header('Server-Timing: my-metric;dur=123');
How can I help you explore Laravel packages today?