query-monitor icon indicating copy to clipboard operation
query-monitor copied to clipboard

Call previous error handler at end of `QM_Collector_PHP_Errors::error_handler()`

Open BrianHenryIE opened this issue 2 years ago • 3 comments

We have an MU plugin to mute deprecation warnings. With Query Monitor active, its error handler is never run.

The common pattern is to save the return value of set_error_handler() to an instance variable, as you have done with $previous_error_handler, and then to call it at the end of the new error handler, if it exists. I have added the latter part.

https://www.php.net/manual/en/function.set-error-handler.php#123459

BrianHenryIE avatar Apr 27 '23 22:04 BrianHenryIE

Thanks for the PR! I'll need to investigate the wider impact of this change.

johnbillion avatar May 03 '23 16:05 johnbillion

I think I need to move the call to the previous error handler to before the filter so it is always run. Currently the filter could short-circuit and return true without calling it. E.g. here is an error handler which logs the error if it's relevant to the plugin, I don't think it's Query Monitor's place to decide not run this code: bh-wp-logger

I'm having trouble spinning up the test environment (although I obviously had it running already). I'll try again soon.

BrianHenryIE avatar May 15 '23 19:05 BrianHenryIE