Page MenuHomePhabricator

Multiple LocalSettings.php with single codebase fails in update.php
Closed, ResolvedPublic

Description

Author: david

Description:
Perform an install using a single codebase with symlinks to multiple install directories, each with separate LocalSettings.php, AdminSettings.php, and
images and extensions directories as described here:

http://meta.wikimedia.org/wiki/MediaWiki_FAQ#Is_it_possible_to_install_more_than_one_wiki_.28MediaWiki.29_on_a_server.3F_How.3F

When performing an update to a new version, the maintenance/update.php script fails due to assumption that LocalSettings.php and AdminSettings.php
are in the same root MediaWiki path as the update.php script.

The following is a unified diff of the changes that need to be performed to fix the file. This fix adds an additional --aconf command line option to specify
the location of the AdminSettings.php file. Combined with the use of the existing --conf option, the update.php script will complete successfully.

  • commandLine.inc.original 2007-02-21 13:31:07.000000000 -0800

+++ commandLine.inc.new 2007-02-21 13:36:54.000000000 -0800
@@ -34,7 +34,10 @@
if ( !isset( $optionsWithArgs ) ) {

$optionsWithArgs = array();

}
-$optionsWithArgs[] = 'conf'; # For specifying the location of LocalSettings.php
+# For specifying the location of:
+# LocalSettings.php (conf)
+# AdminSettings.php (aconf)
+$optionsWithArgs = array( 'conf', 'aconf' );

$self = array_shift( $argv );
$IP = realpath( dirname( FILE ) . '/..' );
@@ -169,6 +172,11 @@

} else {
        $settingsFile = "$IP/LocalSettings.php";
}

+ if ( isset( $options['aconf'] ) ) {
+ $aSettingsFile = $options['aconf'];
+ } else {
+ $aSettingsFile = "$IP/AdminSettings.php";
+ }

if ( ! is_readable( $settingsFile ) ) {
        print "A copy of your installation's LocalSettings.php\n" .

@@ -182,9 +190,9 @@

require_once( $settingsFile );
ini_set( 'include_path', ".$sep$IP$sep$IP/includes$sep$IP/languages$sep$IP/maintenance" );
  • if ( is_readable( $IP.'/AdminSettings.php' ) ) {
  • require_once( $IP.'/AdminSettings.php' );
  • }

+ if ( is_readable( $aSettingsFile ) ) {
+ require_once( $aSettingsFile );
+ }
}

  1. Turn off output buffering again, it might have been turned on in the settings files

Version: unspecified
Severity: normal

Details

Reference
bz9058

Event Timeline

bzimport raised the priority of this task from to Medium.Nov 21 2014, 9:36 PM
bzimport set Reference to bz9058.
bzimport added a subscriber: Unknown Object (MLST).

david wrote:

Patches maintenance/update.php to add --aconf option

Attached:

robchur wrote:

Patch overwrites $optionsWithArguments, would break existing scripts.

robchur wrote:

'aconf' option added in r22845.

The --aconf option appears to be redundant to --conf; I would recommend backing this out and simply fixing it.

david wrote:

FYI - I originally thought it was better to introduce a new option variable as some installs could possibly assume that --conf would only specify a location for LocalSettings.php and depend on AdminSettings.php being in the old location. It's your call which way is better. Both work for me.