X-Git-Url: https://git.heureux-cyclage.org/index.php?a=blobdiff_plain;f=includes%2Fexception%2FMWExceptionHandler.php;h=d863a2bb583c2b9cc6417b6971eb249375be6b6f;hb=251a0b97e5bb8711bac1784e90f9b7d61377e7da;hp=a2ec391dc1a89a707f6ee5e71c3de438d826592c;hpb=670c94ebf528155b9a9017784591e23ef57b9884;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/exception/MWExceptionHandler.php b/includes/exception/MWExceptionHandler.php index a2ec391dc1..d863a2bb58 100644 --- a/includes/exception/MWExceptionHandler.php +++ b/includes/exception/MWExceptionHandler.php @@ -51,7 +51,7 @@ class MWExceptionHandler { * Install handlers with PHP. */ public static function installHandler() { - set_exception_handler( 'MWExceptionHandler::handleException' ); + set_exception_handler( 'MWExceptionHandler::handleUncaughtException' ); set_error_handler( 'MWExceptionHandler::handleError' ); // Reserve 16k of memory so we can report OOM fatals @@ -111,6 +111,25 @@ class MWExceptionHandler { self::logException( $e, self::CAUGHT_BY_HANDLER ); } + /** + * Callback to use with PHP's set_exception_handler. + * + * @since 1.31 + * @param Exception|Throwable $e + */ + public static function handleUncaughtException( $e ) { + self::handleException( $e ); + + // Make sure we don't claim success on exit for CLI scripts (T177414) + if ( wfIsCLI() ) { + register_shutdown_function( + function () { + exit( 255 ); + } + ); + } + } + /** * Exception handler which simulates the appropriate catch() handling: * @@ -260,7 +279,7 @@ class MWExceptionHandler { // HHVM: Class undefined: foo // PHP5: Class 'foo' not found if ( preg_match( "/Class (undefined: \w+|'\w+' not found)/", $msg ) ) { - // @codingStandardsIgnoreStart Generic.Files.LineLength.TooLong + // phpcs:disable Generic.Files.LineLength $msg = <<mediawiki.org for help on installing the required components. TXT; - // @codingStandardsIgnoreEnd + // phpcs:enable } // We can't just create an exception and log it as it is likely that