spatie/laravel-ignition
Ignition is a beautiful, customizable error page for Laravel. Share errors via Flare, track production exceptions with notifications, and get helpful debugging tools. Supports Laravel 10+ on PHP 8.1+ (v2+).
Installation:
composer require spatie/laravel-ignition
Ignition auto-discovers and requires no manual configuration for basic usage.
First Use Case:
Trigger an error in your Laravel app (e.g., 1/0 in a route or controller). Ignition will replace the default Laravel error page with a rich, interactive error page featuring:
Where to Look First:
config/ignition.php (e.g., enabling/disabling features like AI solutions or Flare integration).Debugging in Development:
throw new \Exception('Test error') or 1/0 in routes/controllers.use statements, syntax errors) with clickable "Try this" buttons.Request, Response, or Database to inspect variables without digging through logs.Production Error Tracking (with Flare):
.env:
FLARE_API_KEY=your_key_here
ignition.php:
'enable' => env('APP_ENV') !== 'local',
'flare' => [
'enabled' => env('FLARE_API_KEY') !== null,
],
Customizing Error Pages:
php artisan vendor:publish --tag=ignition-views
Modify files in resources/views/vendor/ignition/.Team Collaboration:
Testing:
$this->withoutExceptionHandling(); // Disable Ignition for tests
With Livewire:
.blade.php files.With Queues/Jobs:
With API Requests:
'api' => [
'enabled' => true,
'status_code' => 500,
],
to ignition.php to return JSON errors in APIs.With Laravel Forge/Vapor:
With Custom Exception Handlers:
render() method, ensure Ignition’s middleware runs before your custom logic:
// app/Http/Kernel.php
protected $middleware = [
\Spatie\Ignition\Middleware\RunIgnition::class,
// ... other middleware
];
HTML Data in Logs:
laravel.log.Middleware Order:
\Spatie\Ignition\Middleware\RunIgnition::class first in $middleware (before TrimStrings, ConvertEmptyStringsToNull, etc.).Flare API Key Leaks:
.env and never hardcode keys. Ignition respects Laravel’s environment variables.Octane/Horizon Compatibility:
ignition.php has:
'octane' => [
'enabled' => true,
],
And update to v2.5.2+ for fixes.Custom Context Data:
ignition() helper to filter data:
use Spatie\Ignition\Ignition;
Ignition::configureContext(function ($context) {
unset($context['request']->headers->all()['authorization']);
});
Disable Ignition Temporarily:
ignition.php:
'enable' => false,
php artisan serve --ignition=0
Clear Ignition Cache:
php artisan view:clear
composer dump-autoload
Check for Conflicts:
Log Inspection:
storage/logs/laravel.log. Ignition should not duplicate logs.Browser Console:
F12) to check for JavaScript errors in Ignition’s UI (e.g., failed API calls to Flare).Custom Solutions:
Spatie\Ignition\Solutions\SolutionProvider:
namespace App\Providers;
use Spatie\Ignition\Solutions\Solution;
use Spatie\Ignition\Solutions\SolutionProvider;
class AppSolutionProvider extends SolutionProvider
{
public function register(): void
{
$this->suggestSolution(
\App\Exceptions\CustomException::class,
fn () => Solution::make('Fix Custom Exception')
->setDescription('Run `php artisan custom:fix`')
->setCode('<pre>// Add this to AppServiceProvider<br>$this->app->singleton(CustomException::class, fn () => new CustomException());</pre>')
);
}
}
AppServiceProvider.Custom Context:
ignition() helper:
Ignition::configureContext(function ($context) {
$context['custom_data'] = [
'user_id' => auth()->id(),
'action' => request()->route()->getName(),
];
});
Override Default Solutions:
php artisan vendor:publish --tag=ignition-solutions
Edit files in app/Spatie/Ignition/Solutions.AI Solutions:
ignition.php:
'ai' => [
'enabled' => true,
'open_ai_key' => env('OPENAI_KEY'),
],
Theming:
php artisan vendor:publish --tag=ignition-assets
Customize files in public/vendor/ignition/.Error Grouping:
**
How can I help you explore Laravel packages today?