Fix "installer started" detection
authorBrad Jorsch <bjorsch@wikimedia.org>
Fri, 9 Oct 2015 21:25:36 +0000 (17:25 -0400)
committerBrad Jorsch <bjorsch@wikimedia.org>
Fri, 9 Oct 2015 21:34:48 +0000 (17:34 -0400)
NoLocalSettings.php tries to detect whether the installer has been
started or not. But this detection has been broken since I4cf237d when a
change was made to stop setting the session name when NO_SESSION is
defined, causing NoLocalSettings.php to be looking at a different
session-cookie than is actually being used by the installer.

The complete fix is twofold:
* Have WebInstaller::startSession() call session_name()
* Have NoLocalSettings.php not call session_name() when PHP's
  session.auto_start configuration setting is set.

Change-Id: I618d11df902b5d1f70e175bc94137621e9195c2f

includes/NoLocalSettings.php
includes/installer/WebInstaller.php

index 6de9bfc..d299ab6 100644 (file)
@@ -37,7 +37,9 @@ foreach ( array_filter( explode( '/', $_SERVER['PHP_SELF'] ) ) as $part ) {
 if ( !function_exists( 'session_name' ) ) {
        $installerStarted = false;
 } else {
-       session_name( 'mw_installer_session' );
+       if ( !wfIniGetBool( 'session.auto_start' ) ) {
+               session_name( 'mw_installer_session' );
+       }
        $oldReporting = error_reporting( E_ALL & ~E_NOTICE );
        $success = session_start();
        error_reporting( $oldReporting );
index c2243b9..67a4def 100644 (file)
@@ -343,6 +343,7 @@ class WebInstaller extends Installer {
                $this->phpErrors = array();
                set_error_handler( array( $this, 'errorHandler' ) );
                try {
+                       session_name( 'mw_installer_session' );
                        session_start();
                } catch ( Exception $e ) {
                        restore_error_handler();