From: Brad Jorsch Date: Wed, 13 Jun 2018 13:51:57 +0000 (-0400) Subject: PHPSessionHandler: Suppress warnings in initialize() X-Git-Tag: 1.31.1~11 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=43ee1abaca625261f5caae501bf9b10b54bc2e30 PHPSessionHandler: Suppress warnings in initialize() PHP 7.2 has gotten strict about calling various session-related methods after headers were sent. Even in CLI mode where there are no headers to send in the first place. Silence these warnings. Bug: T197030 Change-Id: Idaabf1320c56e0d6c26387f03af05f32e1496a1c (cherry picked from commit 701854b3ebc3c2b06067823395a7d95e8984cfda) --- diff --git a/RELEASE-NOTES-1.31 b/RELEASE-NOTES-1.31 index a67aca010c..4841f779df 100644 --- a/RELEASE-NOTES-1.31 +++ b/RELEASE-NOTES-1.31 @@ -14,8 +14,7 @@ This is a security and maintenance release of the MediaWiki 1.31 branch. * (T198037) GitInfo: Don't try shelling out if it's disabled. * (T151415) Log email changes. * (T197206) Fix performance regression when multiple DB used without caching. - -== MediaWiki 1.31 == +* (T197030) PHPSessionHandler: Suppress headers warnings in initialize(). === Changes since MediaWiki 1.31.0-rc.2 === * (T195783) Initialize PSR-4 namespaces at same stage as normal autoloader. diff --git a/includes/session/PHPSessionHandler.php b/includes/session/PHPSessionHandler.php index b76f0ff6b7..e1415df4d9 100644 --- a/includes/session/PHPSessionHandler.php +++ b/includes/session/PHPSessionHandler.php @@ -122,22 +122,28 @@ class PHPSessionHandler implements \SessionHandlerInterface { // Close any auto-started session, before we replace it session_write_close(); - // Tell PHP not to mess with cookies itself - ini_set( 'session.use_cookies', 0 ); - ini_set( 'session.use_trans_sid', 0 ); - - // T124510: Disable automatic PHP session related cache headers. - // MediaWiki adds it's own headers and the default PHP behavior may - // set headers such as 'Pragma: no-cache' that cause problems with - // some user agents. - session_cache_limiter( '' ); - - // Also set a sane serialization handler - \Wikimedia\PhpSessionSerializer::setSerializeHandler(); - - // Register this as the save handler, and register an appropriate - // shutdown function. - session_set_save_handler( self::$instance, true ); + try { + \Wikimedia\suppressWarnings(); + + // Tell PHP not to mess with cookies itself + ini_set( 'session.use_cookies', 0 ); + ini_set( 'session.use_trans_sid', 0 ); + + // T124510: Disable automatic PHP session related cache headers. + // MediaWiki adds it's own headers and the default PHP behavior may + // set headers such as 'Pragma: no-cache' that cause problems with + // some user agents. + session_cache_limiter( '' ); + + // Also set a sane serialization handler + \Wikimedia\PhpSessionSerializer::setSerializeHandler(); + + // Register this as the save handler, and register an appropriate + // shutdown function. + session_set_save_handler( self::$instance, true ); + } finally { + \Wikimedia\restoreWarnings(); + } } /**