<?php
/**
+ * @file
* @todo document
- * @addtogroup Maintenance
+ * @ingroup Maintenance
+ * @defgroup Maintenance Maintenance
*/
$wgRequestTime = microtime(true);
}
$optionsWithArgs[] = 'conf'; # For specifying the location of LocalSettings.php
$optionsWithArgs[] = 'aconf'; # As above for AdminSettings.php
+$optionsWithArgs[] = 'wiki'; # For specifying the wiki ID
$self = array_shift( $argv );
-$IP = realpath( dirname( __FILE__ ) . '/..' );
+$IP = strval( getenv('MW_INSTALL_PATH') ) !== ''
+ ? getenv('MW_INSTALL_PATH')
+ : realpath( dirname( __FILE__ ) . '/..' );
#chdir( $IP );
-require_once( "$IP/StartProfiler.php" );
+if ( file_exists( "$IP/StartProfiler.php" ) ) {
+ require_once( "$IP/StartProfiler.php" );
+} else {
+ require_once( "$IP/includes/ProfilerStub.php" );
+}
$options = array();
$args = array();
if ( in_array( $option, $optionsWithArgs ) ) {
$param = next( $argv );
if ( $param === false ) {
- echo "$arg needs an value after it\n";
+ echo "$arg needs a value after it\n";
die( -1 );
}
$options[$option] = $param;
if ( in_array( $option, $optionsWithArgs ) ) {
$param = next( $argv );
if ( $param === false ) {
- echo "$arg needs an value after it\n";
+ echo "$arg needs a value after it\n";
die( -1 );
}
$options[$option] = $param;
$wgUseNormalUser = false;
}
-if ( file_exists( '/home/wikipedia/common/langlist' ) ) {
+if ( file_exists( dirname(__FILE__).'/wikimedia-mode' ) ) {
$wgWikiFarm = true;
- $cluster = trim( file_get_contents( '/etc/cluster' ) );
+ $cluster = 'pmtpa';
+ require_once( "$IP/includes/AutoLoader.php" );
require_once( "$IP/includes/SiteConfiguration.php" );
# Get $wgConf
if ( empty( $wgNoDBParam ) ) {
# Check if we were passed a db name
- $db = array_shift( $args );
+ if ( isset( $options['wiki'] ) ) {
+ $db = $options['wiki'];
+ } else {
+ $db = array_shift( $args );
+ }
list( $site, $lang ) = $wgConf->siteFromDB( $db );
# If not, work out the language and site the old way
$DP = $IP;
ini_set( 'include_path', ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" );
+ if ( $lang == 'test' && $site == 'wikipedia' ) {
+ define( 'TESTWIKI', 1 );
+ }
+
#require_once( $IP.'/includes/ProfilerStub.php' );
- require_once( $IP.'/includes/Defines.php' );
- require_once( $IP.'/CommonSettings.php' );
-
- $bin = '/home/wikipedia/bin';
- if ( $wgUseRootUser ) {
- $wgDBuser = $wgDBadminuser = 'root';
- $wgDBpassword = $wgDBadminpassword = trim(`$bin/mysql_root_pass`);
- } elseif ( !$wgUseNormalUser ) {
- $wgDBuser = $wgDBadminuser = 'wikiadmin';
- $wgDBpassword = $wgDBadminpassword = trim(`$bin/wikiadmin_pass`);
+ require( $IP.'/includes/Defines.php' );
+ require( $IP.'/CommonSettings.php' );
+ if ( !$wgUseNormalUser && is_readable( "$IP/AdminSettings.php" ) ) {
+ require( "$IP/AdminSettings.php" );
}
} else {
$wgWikiFarm = false;
} else {
$settingsFile = "$IP/LocalSettings.php";
}
+ if ( isset( $options['wiki'] ) ) {
+ $bits = explode( '-', $options['wiki'] );
+ if ( count( $bits ) == 1 ) {
+ $bits[] = '';
+ }
+ define( 'MW_DB', $bits[0] );
+ define( 'MW_PREFIX', $bits[1] );
+ }
if ( ! is_readable( $settingsFile ) ) {
print "A copy of your installation's LocalSettings.php\n" .
}
$wgCommandLineMode = true;
$DP = $IP;
- #require_once( $IP.'/includes/ProfilerStub.php' );
- require_once( $IP.'/includes/Defines.php' );
+ require_once( "$IP/includes/AutoLoader.php" );
+ require_once( "$IP/includes/Defines.php" );
require_once( $settingsFile );
/* ini_set( 'include_path', ".$sep$IP$sep$IP/includes$sep$IP/languages$sep$IP/maintenance" ); */
$wgDBservers[$i]['password'] = $wgDBpassword;
}
}
+ if( isset( $wgLBFactoryConf['serverTemplate'] ) ) {
+ $wgLBFactoryConf['serverTemplate']['user'] = $wgDBuser;
+ $wgLBFactoryConf['serverTemplate']['password'] = $wgDBpassword;
+ }
}
if ( defined( 'MW_CMDLINE_CALLBACK' ) ) {
ini_set( 'memory_limit', -1 );
+if( version_compare( phpversion(), '5.2.4' ) >= 0 ) {
+ // Send PHP warnings and errors to stderr instead of stdout.
+ // This aids in diagnosing problems, while keeping messages
+ // out of redirected output.
+ if( ini_get( 'display_errors' ) ) {
+ ini_set( 'display_errors', 'stderr' );
+ }
+
+ // Don't touch the setting on earlier versions of PHP,
+ // as setting it would disable output if you'd wanted it.
+
+ // Note that exceptions are also sent to stderr when
+ // command-line mode is on, regardless of PHP version.
+}
$wgShowSQLErrors = true;
require_once( "$IP/includes/Setup.php" );
-require_once( "$IP/install-utils.inc" );
+require_once( "$IP/maintenance/install-utils.inc" );
$wgTitle = null; # Much much faster startup than creating a title object
-set_time_limit(0);
-
-// --------------------------------------------------------------------
-// Functions
-// --------------------------------------------------------------------
-
-function wfWaitForSlaves( $maxLag ) {
- global $wgLoadBalancer;
- if ( $maxLag ) {
- list( $host, $lag ) = $wgLoadBalancer->getMaxLag();
- while ( $lag > $maxLag ) {
- $name = @gethostbyaddr( $host );
- if ( $name !== false ) {
- $host = $name;
- }
- print "Waiting for $host (lagged $lag seconds)...\n";
- sleep($maxLag);
- list( $host, $lag ) = $wgLoadBalancer->getMaxLag();
- }
- }
-}
-
-
+@set_time_limit(0);
-?>
+$wgProfiling = false; // only for Profiler.php mode; avoids OOM errors