Open gchtr opened 5 years ago
Thanks for the report @gchtr. It's an issue where if you've set an errorReportingLevel
, we only check that, and not the error_reporting
method. We're aware of the issue and will release a fix as soon as we can.
As a temporary fix, you could create a callback function that returns false
if error_reporting
is 0.
Something like:
$bugsnagWordpress->setBeforeNotifyFunction(function ($report) {
if (error_reporting() === 0) {
return false;
}
});
Any news on when https://github.com/bugsnag/bugsnag-php/pull/537 can be made available in bugsnag-wordpress
(i.e. bump the bundled https://github.com/bugsnag/bugsnag-php/ from 2.10.0 to at least 3.18.0)?
Hi @fiskhandlarn
bugsnag-wordpress will need a fair amount of rework to pull in bugsnag-php v3.x. We don't have a timeframe yet but hope to do this when priorities allow.
For the time being the suggested workaround of modifying the behavior in a callback should still work.
if anyone's interested, i'm using this to at least silence lines that begins with @
:
add_action('plugins_loaded', function() {
global $bugsnagWordpress;
if (isset($bugsnagWordpress) && is_callable([$bugsnagWordpress, 'setBeforeNotifyFunction'])) {
try {
// Bugsnag reports PHP warnings for code that is silenced with an @.
// https://github.com/bugsnag/bugsnag-wordpress/issues/35#issuecomment-457130639
$bugsnagWordpress->setBeforeNotifyFunction(function ($report) {
$stacktrace = $report->stacktrace->toArray() ?? null;
if ($stacktrace) {
$line = trim($stacktrace[1]['code'][$stacktrace[1]['lineNumber']] ?? '');
if (strpos($line, '@') === 0) {
return false;
}
}
});
} catch (\BadMethodCallException $e) {
// bugsnag api key probably not set, ignore
}
}
});
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:
Observed behavior
Bugsnag reports PHP warnings for code that is silenced with an
@
.Steps to reproduce
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:
In
shouldIgnoreErrorCode()
, the function might return without checkingerror_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.