A beautiful error page for Laravel apps

Overview

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.

Comments
  • Cross-platform PHPStorm editor URL

    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
    
    opened by antonkomarev 19
  • Disable executing solutions on non-local environments or from non-local IP addresses on version 1.x

    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

    opened by Parsk 11
  • Added a new configuration setting allowing specified request parameters to be masked

    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).

    opened by aran112000 8
  • Automatically fix blade variable typos and optional variables

    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.

    opened by MrRio 7
  • Added support for Nova text editor

    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

    opened by ngurney 6
  • Automagically fix missing semicolons, uses tokenization and only suggests with correct linting

    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
    opened by MrRio 6
  • Automatically fix incorrect view names by either creating the file, or changing it in the controller

    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
    opened by MrRio 6
  • ✨ add support for VScode WSL + SSH remote

    ✨ 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
    
    opened by tyler36 5
  • Show nice error message for merge conflicts

    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
    opened by MrRio 5
  • Cross-platform PHPStorm editor URL

    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

    opened by bleuscyther 4
  • Use \Closure instead of callable - fix #401

    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 Dispatcher@listen 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)

    opened by rodrigopedra 4
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    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.

    dependencies 
    opened by dependabot[bot] 0
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    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.

    dependencies 
    opened by dependabot[bot] 0
  • Bump terser from 4.3.4 to 4.8.1

    Bump terser from 4.3.4 to 4.8.1

    Bumps terser from 4.3.4 to 4.8.1.

    Changelog

    Sourced from terser's changelog.

    v4.8.1 (backport)

    • Security fix for RegExps that should not be evaluated (regexp DDOS)

    v4.8.0

    • Support for numeric separators (million = 1_000_000) was added.
    • Assigning properties to a class is now assumed to be pure.
    • Fixed bug where yield wasn't considered a valid property key in generators.

    v4.7.0

    • A bug was fixed where an arrow function would have the wrong size
    • arguments object is now considered safe to retrieve properties from (useful for length, or 0) even when pure_getters is not set.
    • Fixed erroneous const declarations without value (which is invalid) in some corner cases when using collapse_vars.

    v4.6.13

    • Fixed issue where ES5 object properties were being turned into ES6 object properties due to more lax unicode rules.
    • Fixed parsing of BigInt with lowercase e in them.

    v4.6.12

    • Fixed subtree comparison code, making it see that [1,[2, 3]] is different from [1, 2, [3]]
    • Printing of unicode identifiers has been improved

    v4.6.11

    • Read unused classes' properties and method keys, to figure out if they use other variables.
    • Prevent inlining into block scopes when there are name collisions
    • Functions are no longer inlined into parameter defaults, because they live in their own special scope.
    • When inlining identity functions, take into account the fact they may be used to drop this in function calls.
    • Nullish coalescing operator (x ?? y), plus basic optimization for it.
    • Template literals in binary expressions such as + have been further optimized

    v4.6.10

    • Do not use reduce_vars when classes are present

    v4.6.9

    • Check if block scopes actually exist in blocks

    v4.6.8

    • Take into account "executed bits" of classes like static properties or computed keys, when checking if a class evaluation might throw or have side effects.

    v4.6.7

    • Some new performance gains through a AST_Node.size() method which measures a node's source code length without printing it to a string first.

    ... (truncated)

    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.

    dependencies 
    opened by dependabot[bot] 0
  • Feat flush view data

    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
        // ......
    }
    
    opened by viest 2
Releases(2.17.6)
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

Buggregator 311 Jan 4, 2023
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

Galahad 301 Dec 26, 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

Marcel Pociot 923 Dec 16, 2022
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

Barry vd. Heuvel 14.8k Jan 9, 2023
: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

Raphaël Huchet 2.9k Jan 5, 2023
: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

ARCANEDEV 2.3k Dec 30, 2022
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

Recca Tsai 383 Dec 6, 2022
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

The Laravel Framework 4.4k Dec 27, 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

Tideways 7 Jan 6, 2022
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.

Spatie 260 Dec 29, 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

null 6 Nov 7, 2022
💥 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

Nuno Maduro 4.2k Jan 5, 2023
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

Ahmad Fauzy 32 Nov 14, 2022
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

Cachet 12.5k Dec 5, 2021
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

null 222 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

ali ahmadi 10 Sep 7, 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…)

Loïc Antignac 2 Jul 25, 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. This rep

LaraBug 197 Dec 9, 2022
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

Dennis Smink 1 Jan 4, 2023
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

Graham Campbell 571 Jan 31, 2022