- How do I install spatie/ignition in a Laravel application?
- Usually you should not install it directly. The README routes Laravel users to spatie/laravel-ignition, which wraps this rendering core and already ships as a dev dependency in the Laravel skeleton. Requiring spatie/ignition alongside it creates a second, independently versioned copy that can drift from the constraint the wrapper declares. Install the wrapper and treat this package as its internal implementation detail.
- How do I register Ignition in a plain PHP project?
- Include Composer's autoloader and call Ignition::make()->register() early in your bootstrap, before the code that might throw. That single call hooks the renderer in, with no service container contract, migration, or queue to configure. Optional fluent calls such as applicationPath() and setTheme() can be chained on the same builder.
- Is it safe to show the Ignition error page in production?
- Not by default. The page renders stack traces, source context, environment values, and request data, so exposing it is a disclosure incident rather than a cosmetic bug. Gate rendering behind shouldDisplayException() with an explicit environment check instead of relying on APP_DEBUG alone, and keep the package out of production dependencies.
- How do I configure Ignition, for example the theme or application paths?
- Configuration is fluent on the builder: applicationPath() trims absolute file paths from stack traces and setTheme() applies house colours. You can also call runningInProductionEnvironment() and sendToFlare() to control production behaviour. Everything stays inside the bootstrap registration call, so there are no config files or cache steps to manage.
- Does spatie/ignition send error data to OpenAI or other third parties?
- Only if you enable those features. The AI solution provider ships the error message, class, stack frame, and surrounding context to OpenAI, and Flare reporting sends exception reports to Spatie's commercial service. Both need privacy and DPA review before production, and you should settle on one authoritative monitoring vendor rather than running duplicate collectors.
- How do I add custom solutions to exceptions with Ignition?
- Implement the ProvidesSolution interface on your exception, or write a provider implementing HasSolutionsForThrowable and register it with addSolutionProviders(). Solutions appear as actionable hints beneath the error, which is useful for framework-specific fixes. FlareMiddleware can reshape reports if you also forward them to a monitoring service.
- What is the difference between spatie/ignition and spatie/laravel-ignition?
- spatie/ignition is the framework-agnostic rendering core, while spatie/laravel-ignition is the Laravel wrapper that wires it into the framework and is what the Laravel skeleton installs. Symfony and Drupal have their own wrappers, symfony-ignition-bundle and the Drupal Ignition module. Install the wrapper for your framework, not the core.
- Can I use Ignition with Symfony, Drupal, or OpenMage?
- Yes, through the maintained integrations. Symfony projects should use symfony-ignition-bundle, Drupal 10+ has an Ignition module, and OpenMage has its own module as well. Directly requiring spatie/ignition only makes sense for plain PHP or custom frameworks with no first-party wrapper.
- Which PHP and Laravel versions does spatie/ignition support?
- Support is declared per major in the package composer.json, but the version you actually run is dictated by the laravel-ignition constraint pinned in your application. Check that constraint before upgrading, because version skew between wrapper and core is a common cause of blank error pages. Track the major version rather than pinning it directly.
- What happens if the Ignition error page itself fails?
- This code runs precisely when the process is already unhealthy, so a renderer that throws, exhausts memory, or writes after headers are sent can mask the original exception. Test rendering with a deliberately thrown exception in each environment and keep a fallback logging channel. Also confirm that JSON, API, health check, and CLI requests bypass the pretty page.