A beautiful error page for Laravel apps

Last update: Jun 27, 2022

Ignition: a beautiful error page for Laravel apps

Latest Version on Packagist Tests Psalm Total Downloads

Ignition is a beautiful and customizable error page for Laravel applications running on Laravel 5.5 and newer. It is the default error page for all Laravel 6 applications. It also allows to publicly share your errors on Flare. If configured with a valid Flare API key, your errors in production applications will be tracked, and you'll get notified when they happen.

Screenshot of ignition

Official Documentation

The official documentation for Ignition can be found on the Flare website.

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

License

The MIT License (MIT). Please see License File for more information.

GitHub

https://github.com/facade/ignition
Comments
  • 1. Cross-platform PHPStorm editor URL

    Resolves #33 #104

    This solution was tested in Laravel Whoops Editor package: https://github.com/cybercog/laravel-whoops-editor/blob/master/config/whoops-editor.php#L48

    PHPStorm fix:

    http://localhost:63342/api/file/?file=%path&line=%line
    
    Reviewed by antonkomarev at 2019-09-06 00:01
  • 2. Disable executing solutions on non-local environments or from non-local IP addresses on version 1.x

    Ported code from commit https://github.com/facade/ignition/pull/364 by AlexVanderbist to branch v1, with tests. Matter also discussed here https://github.com/facade/ignition/issues/350#issuecomment-884710367

    Reviewed by Parsk at 2021-07-23 16:25
  • 3. Added a new configuration setting allowing specified request parameters to be masked

    Added a new configuration setting allowing specified request parameters to be masked so they're not exposed (useful for things like passwords and credit card details).

    Reviewed by aran112000 at 2019-08-31 01:04
  • 4. Automatically fix blade variable typos and optional variables

    This PR adds a solution for fixing undefined variables in view files.

    Screen Shot 2019-09-01 at 14 34 03

    The Solution Provider

    • It starts by looking at how similar the variable name is to viewData that's already passed in. If it's above a threshold it shows these solutions first, in order of most similar.
    • After that, it offers to make the variable optional in the blade template by adding ?? ''
    Screen Shot 2019-09-01 at 14 34 23

    The Solutions

    • Both solutions start by loading the blade template, and making an in-memory change
    • The original and resulting blade templates are then compiled to PHP using the Blade Compiler
    • The PHP is then tokenized
    • We modify the tokenized original to our expected output
    • The actual tokenized output is compared to the proposed resulting file, if they don't match, the solution action is never offered to the user, but the suggestion text is.

    This is to ensure we never break a blade template, it also allows us to build upon the basic find and replace logic in the future.

    Automated Tests

    There are some automated tests around this, we can expand to include more difficult cases.

    Reviewed by MrRio at 2019-09-01 13:43
  • 5. Added support for Nova text editor

    Added support for the Nova text editor (nova.app) and updated the config comments to include it in the list of options.

    Disclaimer: I am new to programming and open source, if I missed something please reject

    Reviewed by ngurney at 2020-12-28 22:38
  • 6. Automagically fix missing semicolons, uses tokenization and only suggests with correct linting

    A Solution for Fixing Missing Semicolons

    Screen Shot 2019-09-04 at 22 18 53

    How it works

    1. First it takes the unexpected token from the error message
    2. Then it tokenizes the file in which the syntax error occurred
    3. It reverses the order of the tokenization, and loops over to find the unexpected token
    4. If then waits until the next whitespace token, and inserts that, THEN a semicolon
    5. The file is regenerated in memory with the proposed fix
    6. If this in-memory representation of the fix now passes PHP linting, it is offered as a saveable solution

    Todo:

    • [x] Refactor semicolon insertion slightly
    • [x] Add automated tests
    Reviewed by MrRio at 2019-09-04 21:21
  • 7. Automatically fix incorrect view names by either creating the file, or changing it in the controller

    This PR adds a solution for fixing missing views

    Screen Shot 2019-09-01 at 17 47 03

    The Solution Provider

    • It uses the existing logic to see if there is a close enough view name to suggest. If there is, it will offer to change it for you.
    • Otherwise, it will offer to create the view file for you
    Screen Shot 2019-09-01 at 17 47 28

    Update View Name Solution

    • It looks through the stack trace for the first file within the users' app/ directory, this will generally be the controller
    • It then loads the controller into memory, and converts it into an array of PHP tokens
    • We change string names that match the missing view, and change this in the array of tokens
    • We retokenize the output, and compare what we expected with what we got, if this doesn't work, the user isn't offered an automatic fix

    Create View File Solution

    • It explodes the view by .
    • recursively makes folders in the first scanned view path for the app
    • Touches the full file path to create an empty file

    Automated Tests

    There are some automated tests around this, we can expand to include more difficult cases.

    TODO

    • [x] Make sure we only update the string if it's inside a call to view()
    • [x] Test for create file solution
    Reviewed by MrRio at 2019-09-01 16:55
  • 8. ✨ add support for VScode WSL + SSH remote

    This PR adds support for:

    • VSCode Remote:WSL
    • VSCode Remote:SSH
    • VSCode-insiders Remote:WSL
    • VSCode-insiders Remote:SSH

    How to use

    • Add the following to your project .env
    IGNITION_EDITOR=vscode-remote
    
    • If you prefer to use VSCode-insiders, use IGNITION_EDITOR=vscode-insiders-remote instead.

    • Next, you need to update your IGNITION_LOCAL_SITES_PATH to the following format:

    {remote-type}+{remote-target}/{remote-path}

    • Pro tip: Run pwd from a VSCode terminal when using the remote extension to get the {remote-path}

    Remote-WSL

    • It is assumed you use VSCode with Remote-WSL extension to manage your project.
    • Update your IGNITION_LOCAL_SITES_PATH variable to WSL format:
      • wsl+{distro}/{remote-path}

    EG. You use a Ubuntu WSL2 distro and your project is located at /home/user13/code/awesome-site

    IGNITION_LOCAL_SITES_PATH=wsl+Ubuntu/home/user13/code/awesome-site
    

    Remote-SSH

    • It is assumed you use VSCode with Remote-SSH extension to access your project.
    • Update your IGNITION_LOCAL_SITES_PATH variable to SSH format:
      • ssh-remote+{host}/{remote-path}

    EG. Your SSH file has a Host entry called devserver and your project is located at /home/user13/code/awesome-site

    IGNITION_LOCAL_SITES_PATH=ssh-remote+devserver/home/user13/code/awesome-site
    
    Reviewed by tyler36 at 2021-10-01 02:04
  • 9. Show nice error message for merge conflicts

    Screen Shot 2019-09-02 at 17 28 04

    This is a relatively simple Solution Provider that shows a pretty error message for a merge conflict.

    I don't think we offer an automatic solution here as the results are potentially quite drastic for a single accidental click.

    Notes:

    • ~There's a workaround in place as it's impossible to turn off linting in style-ci for any .php file, but we're going to want to test with a real actually broken file. We copy this into place for the test.~

    Todo:

    • [x] Automated test
    Reviewed by MrRio at 2019-09-02 16:31
  • 10. Cross-platform PHPStorm editor URL

    I used the JetBrain toolbox extension + some extra documentation to generate the correct URL for the new IDE with Toolbox.

    This should work on all platforms.

    Some points of concern

    • Compatibility with old PhpStorm versions, especially before the toolbox app
    • Seem to open file one line after intended

    fixes this issue: https://github.com/facade/ignition/pull/112

    Reviewed by bleuscyther at 2021-11-29 18:47
  • 11. Use \Closure instead of callable - fix #401

    PR #398 fixed and issue with Laravel Vapor, but changed \Closure usage to callable.

    Problem is Laravel Event Dispatcher treats \Closure...

    https://github.com/laravel/framework/blob/c7824d4e163947331d2676dc35213126499736a1/src/Illuminate/Events/Dispatcher.php#L79-L81

    ... differently than callables ...

    https://github.com/laravel/framework/blob/c7824d4e163947331d2676dc35213126499736a1/src/Illuminate/Events/Dispatcher.php#L87-L93

    ... as such $this refers to different objects when using these two different syntax.

    both snippets are from the same [email protected] method

    which causes issues with queued jobs as reported in #401

    For example after updating to 2.11.1 I got these errors on production:

    image

    I reverted back to 2.11.0 to avoid issues.

    This PR keeps the Vapor related changes from PR #398 (not using the looping listener) but reverts to call $this->resetFlare(); from within a \Closure (anonymous function) so the $this context is preserved.

    I didn't added any automated tests as this was an emergency or hot fix to #401 but I tested manually symlinking the fixed repo to my local app.

    (closes #401)

    Reviewed by rodrigopedra at 2021-07-20 13:37
  • 12. Bump minimist from 1.2.5 to 1.2.6

    Bumps minimist from 1.2.5 to 1.2.6.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    Reviewed by dependabot[bot] at 2022-03-24 14:15
  • 13. Feat flush view data

    The view data keeps appending causing memory to increase.

    For example.

    There is a timed task to send emails, I send 100 emails with different data, the view data length will be 100, the data volume is large but the memory is relatively small, it can easily lead to killed.

    Add a method to clean up view data, users can clean up unnecessary data by themselves to protect memory.

    for ($index = 0; $index < 100; $index++) {
        /* @var Factory $viewFactor */
        $viewFactor = Mail::getViewFactory();
    
        $view = $viewFactor->make('email.view', [
            // big data......
        ]);
    
        // get html
        $data = $view->render();
    
        /* @var CompilerEngine $viewEngine */
        $viewEngine = $view->getEngine();
        $viewEngine->flushViewData();
    
        // send mail via raw data
        // ......
    }
    
    Reviewed by viest at 2022-02-25 16:20
Buggregator is a beautiful, lightweight web server built on Laravel and VueJs that helps debugging your app.
Buggregator is a beautiful, lightweight web server built on Laravel and VueJs that helps debugging your app.

A server for debugging more than just Laravel applications. Buggregator is a beautiful, lightweight web server built on Laravel and VueJs that helps d

Jun 28, 2022
Laravel Dumper - Improve the default output of dump() and dd() in Laravel projects

Laravel Dumper Improve the default output of dump() and dd() in Laravel projects. Improves the default dump behavior for many core Laravel objects, in

May 25, 2022
Generate Laravel test factories from your existing models

Laravel Test Factory Generator php artisan generate:model-factory This package will generate factories from your existing models so you can get starte

Jun 21, 2022
Laravel Debugbar (Integrates PHP Debug Bar)
Laravel Debugbar (Integrates PHP Debug Bar)

Laravel Debugbar This is a package to integrate PHP Debug Bar with Laravel. It includes a ServiceProvider to register the debugbar and attach it to th

Jun 24, 2022
:dromedary_camel: Laravel log viewer
:dromedary_camel: Laravel log viewer

Laravel log viewer TL;DR Log Viewer for Laravel 5, 6, 7 & 8 (still compatible with 4.2 too) and Lumen. Install with composer, create a route to LogVie

Jun 23, 2022
:page_with_curl: Provides a log viewer for Laravel
:page_with_curl: Provides a log viewer for Laravel

LogViewer By ARCANEDEV© This package allows you to manage and keep track of each one of your log files. NOTE: You can also use LogViewer as an API. Of

Jun 22, 2022
A Laravel Package to integrate Nette Tracy Debugger
A Laravel Package to integrate Nette Tracy Debugger

Nette Tracy for Laravel 5 Better Laravel Exception Handler Features Visualization of errors and exceptions Debugger Bar (ajax support @v1.5.6) Excepti

Jun 16, 2022
An elegant debug assistant for the Laravel framework.
An elegant debug assistant for the Laravel framework.

Introduction Laravel Telescope is an elegant debug assistant for the Laravel framework. Telescope provides insight into the requests coming into your

Jul 1, 2022
This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception Tracking.

Tideways Middleware for Laravel Octane This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception T

Jan 6, 2022
Ignition: a beautiful error page for Laravel apps
 Ignition: a beautiful error page for Laravel apps

Ignition is a beautiful and customizable error page for Laravel applications running on Laravel 5.5 and newer. It is the default error page for all Laravel 6 applications.

Jun 23, 2022
A super simple, clean and pretty error handler that replace the default error handler of PHP. You need only include this file!

php-custom-error-handler A super simple, clean and pretty error handler that replace the default error handler of PHP. You need just include only this

Jun 9, 2022
💥 Collision is a beautiful error reporting tool for command-line applications
💥 Collision is a beautiful error reporting tool for command-line applications

Collision was created by, and is maintained by Nuno Maduro, and is a package designed to give you beautiful error reporting when interacting with your

Jun 26, 2022
EBook-Apps - The eBook Apps is a web application that helps you browse ebooks from anywhere using your smartphone and laptop.

⚡️ eBook Apps The eBook Apps is a web application that helps you browse ebooks from anywhere using your smartphone and laptop. ?? Getting Started To s

Jun 10, 2022
Cachet is a beautiful and powerful open source status page system.
Cachet is a beautiful and powerful open source status page system.

Cachet is a beautiful and powerful open source status page system. Overview List your service components Report incidents Customise the look of your s

Dec 5, 2021
Laravue - a sensible starting point for single-page apps
 Laravue - a sensible starting point for single-page apps

Laravue - a sensible starting point for single-page apps Note: The vast majority of the functionality of this project has essentially been added into

Oct 7, 2021
project with laravel 9 and php 8 and vuejs 3(modular) in both multi page and single page application

About Project Since Laravel 9 was recently released, it supports PHP 8 and above. So I decided to implement a prototype project using Laravel 9 + PHP

Jun 11, 2022
WordPress entities creation library (CPT, CT, native option page, ACF option page, user role, block pattern category, block category…)

WordPress entities creation library (CPT, CT, native option page, ACF option page, user role, block pattern category, block category…)

Jun 8, 2022
Your users do not always report errors, LaraBug does. LaraBug is a simple to use and implement error tracker built for the Laravel framework.
Your users do not always report errors, LaraBug does. LaraBug is a simple to use and implement error tracker built for the Laravel framework.

Your users do not always report errors, LaraBug does. LaraBug is a simple to use and implement error tracker built for the Laravel framework. This rep

Jun 15, 2022
Laravel error reporting tool
Laravel error reporting tool

LaraBug Laravel 5.8/6.x/7.x/8.x package for logging errors to larabug.com Installation You can install the package through Composer. composer require

Jul 9, 2021
Provides a powerful error response system for Laravel
Provides a powerful error response system for Laravel

Laravel Exceptions Laravel Exceptions was created by, and is maintained by Graham Campbell, and provides a powerful error response system for both dev

Jan 31, 2022