Skip to content

Bugsnag shouldn’t report silenced errors #35

@gchtr

Description

@gchtr

Expected behavior

When error reporting is set to Warning, then Bugsnag shouldn’t report silenced PHP errors. For example, the following code shouldn’t report a warning:

@unlink( '/path/to/inexistent/file.jpg' );

Observed behavior

Bugsnag reports PHP warnings for code that is silenced with an @.

Steps to reproduce

  1. Put this code in functions.php of your theme and reload the page.
    @unlink( '/path/to/inexistent/file.jpg' );
  2. See error in the dashboard.

I’m not sure, but this logic might be what causes the warning to be reported:

https://github.com/bugsnag/bugsnag-php/blob/e50a26a5535f5e4ffb386a449710f2ce9c050287/src/Configuration.php#L543-L550

PHP’s documentation for error control operators clearly states:

If you have set a custom error handler function with set_error_handler() then it will still get called, but this custom error handler can (and should) call error_reporting() which will return 0 when the call that triggered the error was preceded by an @.

In shouldIgnoreErrorCode(), the function might return without checking error_reporting(). So I’m guessing that this is why silenced errors are reported.

Version

Bugsnag: 1.3.1
WordPress: 5.0.3

Additional information

Tell me if you need some more information.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlogWe hope to fix this feature/bug in the futurebugConfirmed bug

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions