From 164ac414fadd35ee13b7f9d0210058e2d0e89a50 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 16 Nov 2014 16:08:29 +0100 Subject: [PATCH] exception: Prefix error type in front of error message Follows-up 399ba2fecf which didn't include any translation of the error type in the logged message (e.g. "PHP Notice" or "PHP Warning"). Before Error from line 2130 of mediawiki/includes/OutputPage.php: Undefined variable: bar Error from line 2130 of mediawiki/includes/OutputPage.php: strpos() expects at le.. After Error from line 2130 of mediawiki/includes/OutputPage.php: PHP Notice: Undefined variable: bar Error from line 2130 of mediawiki/includes/OutputPage.php: PHP Warning: strpos() expects at le.. Based on the log formatter in php https://github.com/php/php-src/blob/0f5858e3a328/main/main.c#L1086-L1119 Change-Id: I52f98e52caa64955050ed73e1acbc78b1116a9fd --- includes/exception/MWExceptionHandler.php | 34 ++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php index 0d90e66949..9db04cbf6d 100644 --- a/includes/exception/MWExceptionHandler.php +++ b/includes/exception/MWExceptionHandler.php @@ -167,7 +167,39 @@ class MWExceptionHandler { * @param int $line */ public static function handleError( $level, $message, $file = null, $line = null ) { - $e = new ErrorException( $message, 0, $level, $file, $line ); + // Map error constant to error name (reverse-engineer PHP error reporting) + switch ( $level ) { + case E_ERROR: + case E_CORE_ERROR: + case E_COMPILE_ERROR: + case E_USER_ERROR: + case E_RECOVERABLE_ERROR: + case E_PARSE: + $levelName = 'Error'; + break; + case E_WARNING: + case E_CORE_WARNING: + case E_COMPILE_WARNING: + case E_USER_WARNING: + $levelName = 'Warning'; + break; + case E_NOTICE: + case E_USER_NOTICE: + $levelName = 'Notice'; + break; + case E_STRICT: + $levelName = 'Strict Standards'; + break; + case E_DEPRECATED: + case E_USER_DEPRECATED: + $levelName = 'Deprecated'; + break; + default: + $levelName = 'Unknown error'; + break; + } + + $e = new ErrorException( "PHP $levelName: $message", 0, $level, $file, $line ); self::logError( $e ); // This handler is for logging only. Return false will instruct PHP -- 2.20.1