Fix error suppression for PHP 8+ #16615
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does it do?
Adds a check to the custom error handler function, to see if a warning has to be handled.
Why is it needed?
MODX has a custom error handler function. When the error control operator (
@
) is used (e.g.@exif_read_data()
), the custom error handler still gets called.With PHP 7.4, when the error was suppressed by the
@
operator,error_reporting()
called inside the custom error handler always returned 0. This gets checked here:revolution/core/src/Revolution/Error/modErrorHandler.php
Lines 61 to 63 in 9e7bb63
With PHP 8, this is no longer the case:
https://www.php.net/manual/en/language.operators.errorcontrol.php
How to test
For example:
PHP warning: exif_read_data(...): File not supported
doesn't get logged to the MODX error log anymore.Related issue(s)/PR(s)
#16420