MediaWiki REL1_41
Setup.php
Go to the documentation of this file.
1<?php
53// phpcs:disable MediaWiki.Usage.DeprecatedGlobalVariables
72use Psr\Log\LoggerInterface;
73use Wikimedia\RequestTimeout\RequestTimeout;
74
82// This file must be included from a valid entry point (e.g. WebStart.php, Maintenance.php)
83if ( !defined( 'MEDIAWIKI' ) ) {
84 exit( 1 );
85}
86
87// PHP must not be configured to overload mbstring functions. (T5782, T122807)
88// This was deprecated by upstream in PHP 7.2 and was removed in PHP 8.0.
89if ( ini_get( 'mbstring.func_overload' ) ) {
90 die( 'MediaWiki does not support installations where mbstring.func_overload is non-zero.' );
91}
92
93// The MW_ENTRY_POINT constant must always exists, to make it safe to access.
94// For compat, we do support older and custom MW entrypoints that don't set this,
95// in which case we assign a default here.
96if ( !defined( 'MW_ENTRY_POINT' ) ) {
102 define( 'MW_ENTRY_POINT', 'unknown' );
103}
104
105// The $IP variable is defined for use by LocalSettings.php.
106// It is made available as a global variable for backwards compatibility.
107//
108// Source code should instead use the MW_INSTALL_PATH constant, or the
109// MainConfigNames::BaseDirectory setting. The BaseDirectory setting is set further
110// down in Setup.php to the value of MW_INSTALL_PATH.
111global $IP;
112$IP = wfDetectInstallPath(); // ensure MW_INSTALL_PATH is defined
113
119require_once MW_INSTALL_PATH . '/includes/AutoLoader.php';
120require_once MW_INSTALL_PATH . '/includes/Defines.php';
121
122// Assert that composer dependencies were successfully loaded
123if ( !interface_exists( LoggerInterface::class ) ) {
124 $message = (
125 'MediaWiki requires the <a href="https://github.com/php-fig/log">PSR-3 logging ' .
126 "library</a> to be present. This library is not embedded directly in MediaWiki's " .
127 "git repository and must be installed separately by the end user.\n\n" .
128 'Please see the <a href="https://www.mediawiki.org/wiki/Download_from_Git' .
129 '#Fetch_external_libraries">instructions for installing libraries</a> on mediawiki.org ' .
130 'for help on installing the required components.'
131 );
132 echo $message;
133 trigger_error( $message, E_USER_ERROR );
134}
135
136// Set $wgCommandLineMode to false if it wasn't set to true.
138
145
147
148$wgSettings = SettingsBuilder::getInstance();
149
150if ( defined( 'MW_USE_CONFIG_SCHEMA_CLASS' ) ) {
151 // Load config schema from MainConfigSchema. Useful for running scripts that
152 // generate other representations of the config schema. This is slow, so it
153 // should not be used for serving web traffic.
154 $wgSettings->load( new ReflectionSchemaSource( MainConfigSchema::class ) );
155} else {
156 $wgSettings->load( new PhpSettingsSource( MW_INSTALL_PATH . '/includes/config-schema.php' ) );
157}
158
159require_once MW_INSTALL_PATH . '/includes/GlobalFunctions.php';
160
161HeaderCallback::register();
162
163// Set the encoding used by PHP for reading HTTP input, and writing output.
164// This is also the default for mbstring functions.
165mb_internal_encoding( 'UTF-8' );
166
171// Initialize some config settings with dynamic defaults, and
172// make default settings available in globals for use in LocalSettings.php.
173$wgSettings->putConfigValues( [
174 MainConfigNames::BaseDirectory => MW_INSTALL_PATH,
175 MainConfigNames::ExtensionDirectory => MW_INSTALL_PATH . '/extensions',
176 MainConfigNames::StyleDirectory => MW_INSTALL_PATH . '/skins',
177 MainConfigNames::ServiceWiringFiles => [ MW_INSTALL_PATH . '/includes/ServiceWiring.php' ],
178 'Version' => MW_VERSION,
179] );
180$wgSettings->apply();
181
182// $wgSettings->apply() puts all configuration into global variables.
183// If we are not in global scope, make all relevant globals available
184// in this file's scope as well.
185$wgScopeTest = 'MediaWiki Setup.php scope test';
186if ( !isset( $GLOBALS['wgScopeTest'] ) || $GLOBALS['wgScopeTest'] !== $wgScopeTest ) {
187 foreach ( $wgSettings->getConfigSchema()->getDefinedKeys() as $key ) {
188 $var = "wg$key";
189 // phpcs:ignore MediaWiki.NamingConventions.ValidGlobalName.allowedPrefix
190 global $$var;
191 }
192 unset( $key, $var );
193}
194unset( $wgScopeTest );
195
196try {
197 if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
198 call_user_func( MW_CONFIG_CALLBACK, $wgSettings );
199 } else {
200 wfDetectLocalSettingsFile( MW_INSTALL_PATH );
201
202 if ( getenv( 'MW_USE_LOCAL_SETTINGS_LOADER' ) ) {
203 // NOTE: This will not work for configuration variables that use a prefix
204 // other than "wg".
205 $localSettingsLoader = new LocalSettingsLoader( $wgSettings, MW_INSTALL_PATH );
206 $localSettingsLoader->loadLocalSettingsFile( MW_CONFIG_FILE );
207 unset( $localSettingsLoader );
208 } else {
209 if ( str_ends_with( MW_CONFIG_FILE, '.php' ) ) {
210 // make defaults available as globals
211 $wgSettings->apply();
212 require_once MW_CONFIG_FILE;
213 } else {
214 $wgSettings->loadFile( MW_CONFIG_FILE );
215 }
216 }
217 }
218
219 // Make settings loaded by LocalSettings.php available in globals for use here
220 $wgSettings->apply();
221} catch ( MissingExtensionException $e ) {
222 // Make a common mistake give a friendly error
223 $e->render();
224}
225
226// If in a wiki-farm, load site-specific settings
227if ( $wgSettings->getConfig()->get( MainConfigNames::WikiFarmSettingsDirectory ) ) {
228 $wikiFarmSettingsLoader = new WikiFarmSettingsLoader( $wgSettings );
229 $wikiFarmSettingsLoader->loadWikiFarmSettings();
230 unset( $wikiFarmSettingsLoader );
231}
232
233// All settings should be loaded now.
234$wgSettings->enterRegistrationStage();
235
243if ( defined( 'MW_SETUP_CALLBACK' ) ) {
244 call_user_func( MW_SETUP_CALLBACK, $wgSettings );
245 // Make any additional settings available in globals for use here
246 $wgSettings->apply();
247}
248
249// Apply dynamic defaults declared in config schema callbacks.
251$dynamicDefaults->applyDynamicDefaults( $wgSettings->getConfigBuilder() );
252
253// Make updated config available in global scope.
254$wgSettings->apply();
255
256// Apply dynamic defaults implemented in SetupDynamicConfig.php.
257// Ideally, all logic in SetupDynamicConfig would be converted to
258// callbacks in the config schema.
259require __DIR__ . '/SetupDynamicConfig.php';
260
261if ( defined( 'MW_AUTOLOAD_TEST_CLASSES' ) ) {
262 require_once __DIR__ . '/../tests/common/TestsAutoLoader.php';
263}
264
265if ( $wgBaseDirectory !== MW_INSTALL_PATH ) {
266 throw new FatalError(
267 '$wgBaseDirectory must not be modified in settings files! ' .
268 'Use the MW_INSTALL_PATH environment variable to override the installation root directory.'
269 );
270}
271
272// Start time limit
274 RequestTimeout::singleton()->setWallTimeLimit( $wgRequestTimeLimit );
275}
276
280if ( defined( 'MW_AUTOLOAD_TEST_CLASSES' ) ) {
281 ExtensionRegistry::getInstance()->setLoadTestClassesAndNamespaces( true );
282}
283
284ExtensionRegistry::getInstance()->setSettingsBuilder( $wgSettings );
285ExtensionRegistry::getInstance()->loadFromQueue();
286// Don't let any other extensions load
288
294if ( defined( 'MW_FINAL_SETUP_CALLBACK' ) ) {
295 call_user_func( MW_FINAL_SETUP_CALLBACK, $wgSettings );
296 // Make any additional settings available in globals for use below
297 $wgSettings->apply();
298}
299
300// Config can no longer be changed.
301$wgSettings->enterReadOnlyStage();
302
303// Set an appropriate locale (T291234)
304// setlocale() will return the locale name actually set.
305// The putenv() is meant to propagate the choice of locale to shell commands
306// so that they will interpret UTF-8 correctly. If you have a problem with a
307// shell command and need to send a special locale, you can override the locale
308// with Command::environment().
309putenv( "LC_ALL=" . setlocale( LC_ALL, 'C.UTF-8', 'C' ) );
310
311// Set PHP runtime to the desired timezone
312date_default_timezone_set( $wgLocaltimezone );
313
315
316// Enable the global service locator.
317// Trivial expansion of site configuration should go before this point.
318// Any non-trivial expansion that requires calling into MediaWikiServices or other parts of MW.
319MediaWikiServices::allowGlobalInstance();
320
321// Define a constant that indicates that the bootstrapping of the service locator
322// is complete.
323define( 'MW_SERVICE_BOOTSTRAP_COMPLETE', 1 );
324
325MWExceptionRenderer::setShowExceptionDetails( $wgShowExceptionDetails );
326if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
327 // Never install the handler in PHPUnit tests, otherwise PHPUnit's own handler will be unset and things
328 // like convertWarningsToExceptions won't work.
329 MWExceptionHandler::installHandler( $wgLogExceptionBacktrace, $wgPropagateErrors );
330}
332
333// Non-trivial validation of: $wgServer
334// The FatalError page only renders cleanly after MWExceptionHandler is installed.
335if ( $wgServer === false ) {
336 // T30798: $wgServer must be explicitly set
337 throw new FatalError(
338 '$wgServer must be set in LocalSettings.php. ' .
339 'See <a href="https://www.mediawiki.org/wiki/Manual:$wgServer">' .
340 'https://www.mediawiki.org/wiki/Manual:$wgServer</a>.'
341 );
342}
343
344// Set up a fake $wgHooks array.
345// XXX: It would be nice if we could still get the originally configured hook handlers
346// using the MainConfigNames::Hooks setting, but it's not really needed,
347// since we need the HookContainer to be initialized first anyway.
348
349global $wgHooks;
351 MediaWikiServices::getInstance()->getHookContainer(),
353);
354
355// Non-trivial expansion of: $wgCanonicalServer, $wgServerName.
356// These require calling global functions.
357// Also here are other settings that further depend on these two.
358if ( $wgCanonicalServer === false ) {
359 $wgCanonicalServer = MediaWikiServices::getInstance()->getUrlUtils()->getCanonicalServer();
360}
362
364if ( $wgServerName !== false ) {
365 wfWarn( '$wgServerName should be derived from $wgCanonicalServer, '
366 . 'not customized. Overwriting $wgServerName.' );
367}
369unset( $serverParts );
370
371// $wgEmergencyContact and $wgPasswordSender may be false or empty string (T104142)
372if ( !$wgEmergencyContact ) {
373 $wgEmergencyContact = 'wikiadmin@' . $wgServerName;
374}
375if ( !$wgPasswordSender ) {
376 $wgPasswordSender = 'apache@' . $wgServerName;
377}
378if ( !$wgNoReplyAddress ) {
380}
381
382// Non-trivial expansion of: $wgSecureLogin
383// (due to calling wfWarn).
384if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
385 $wgSecureLogin = false;
386 wfWarn( 'Secure login was enabled on a server that only supports '
387 . 'HTTP or HTTPS. Disabling secure login.' );
388}
389
390// Now that GlobalFunctions is loaded, set defaults that depend on it.
391if ( $wgTmpDirectory === false ) {
393}
394
396 // Apply $wgSharedDB table aliases for the local LB (all non-foreign DB connections)
397 MediaWikiServices::getInstance()->getDBLoadBalancer()->setTableAliases(
398 array_fill_keys(
400 [
401 'dbname' => $wgSharedDB,
402 'schema' => $wgSharedSchema,
403 'prefix' => $wgSharedPrefix
404 ]
405 )
406 );
407}
408
409// Raise the memory limit if it's too low
410// NOTE: This use wfDebug, and must remain after the MWDebug::setup() call.
412
413// Explicit globals, so this works with bootstrap.php
415
416// Initialize the request object in $wgRequest
417$wgRequest = RequestContext::getMain()->getRequest(); // BackCompat
418
419// Make sure that object caching does not undermine the ChronologyProtector improvements
420if ( $wgRequest->getCookie( 'UseDC', '' ) === 'master' ) {
421 // The user is pinned to the primary DC, meaning that they made recent changes which should
422 // be reflected in their subsequent web requests. Avoid the use of interim cache keys because
423 // they use a blind TTL and could be stale if an object changes twice in a short time span.
424 MediaWikiServices::getInstance()->getMainWANObjectCache()->useInterimHoldOffCaching( false );
425}
426
427// Useful debug output
428( static function () {
430
431 $logger = LoggerFactory::getInstance( 'wfDebug' );
432 if ( $wgCommandLineMode ) {
433 $self = $_SERVER['PHP_SELF'] ?? '';
434 $logger->debug( "\n\nStart command line script $self" );
435 } else {
436 $debug = "\n\nStart request {$wgRequest->getMethod()} {$wgRequest->getRequestURL()}\n";
437 $debug .= "IP: " . $wgRequest->getIP() . "\n";
438 $debug .= "HTTP HEADERS:\n";
439 foreach ( $wgRequest->getAllHeaders() as $name => $value ) {
440 $debug .= "$name: $value\n";
441 }
442 $debug .= "(end headers)";
443 $logger->debug( $debug );
444 }
445} )();
446
447// Most of the config is out, some might want to run hooks here.
448( new HookRunner( MediaWikiServices::getInstance()->getHookContainer() ) )->onSetupAfterCache();
449
450// Now that variant lists may be available, parse any action paths and article paths
451// as query parameters.
452//
453// Skip title interpolation on API queries where it is useless and sometimes harmful (T18019).
454//
455// Optimization: Skip on load.php and all other entrypoints besides index.php to save time.
456//
457// TODO: Figure out if this can be safely done after everything else in Setup.php (e.g. any
458// hooks or other state that would miss this?). If so, move to wfIndexMain or MediaWiki::run.
459if ( MW_ENTRY_POINT === 'index' ) {
460 $wgRequest->interpolateTitle();
461}
462
467if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
468 // If session.auto_start is there, we can't touch session name
469 if ( $wgPHPSessionHandling !== 'disable' && !wfIniGetBool( 'session.auto_start' ) ) {
470 HeaderCallback::warnIfHeadersSent();
471 session_name( $wgSessionName ?: $wgCookiePrefix . '_session' );
472 }
473
474 // Create the SessionManager singleton and set up our session handler,
475 // unless we're specifically asked not to.
476 if ( !defined( 'MW_NO_SESSION_HANDLER' ) ) {
477 MediaWiki\Session\PHPSessionHandler::install(
478 MediaWiki\Session\SessionManager::singleton()
479 );
480 }
481
482 $contLang = MediaWikiServices::getInstance()->getContentLanguage();
483
484 // Initialize the session
485 try {
486 $session = MediaWiki\Session\SessionManager::getGlobalSession();
487 } catch ( MediaWiki\Session\SessionOverflowException $ex ) {
488 // The exception is because the request had multiple possible
489 // sessions tied for top priority. Report this to the user.
490 $list = [];
491 foreach ( $ex->getSessionInfos() as $info ) {
492 $list[] = $info->getProvider()->describe( $contLang );
493 }
494 $list = $contLang->listToText( $list );
495 throw new HttpError( 400,
496 Message::newFromKey( 'sessionmanager-tie', $list )->inLanguage( $contLang )
497 );
498 }
499
500 unset( $contLang );
501
502 if ( $session->isPersistent() ) {
503 $wgInitialSessionId = $session->getSessionId();
504 }
505
506 $session->renew();
507 if ( MediaWiki\Session\PHPSessionHandler::isEnabled() &&
508 ( $session->isPersistent() || $session->shouldRememberUser() ) &&
509 session_id() !== $session->getId()
510 ) {
511 // Start the PHP-session for backwards compatibility
512 if ( session_id() !== '' ) {
513 wfDebugLog( 'session', 'PHP session {old_id} was already started, changing to {new_id}', 'all', [
514 'old_id' => session_id(),
515 'new_id' => $session->getId(),
516 ] );
517 session_write_close();
518 }
519 session_id( $session->getId() );
520 session_start();
521 }
522
523 unset( $session );
524} else {
525 // Even if we didn't set up a global Session, still install our session
526 // handler unless specifically requested not to.
527 if ( !defined( 'MW_NO_SESSION_HANDLER' ) ) {
528 MediaWiki\Session\PHPSessionHandler::install(
529 MediaWiki\Session\SessionManager::singleton()
530 );
531 }
532}
533
534// Explicit globals, so this works with bootstrap.php
536
542$wgUser = new StubGlobalUser( RequestContext::getMain()->getUser() ); // BackCompat
543register_shutdown_function( static function () {
544 StubGlobalUser::$destructorDeprecationDisarmed = true;
545} );
546
551
555$wgOut = RequestContext::getMain()->getOutput(); // BackCompat
556
560$wgTitle = null;
561
562// Explicit globals, so this works with bootstrap.php
564
565// Extension setup functions
566// Entries should be added to this variable during the inclusion
567// of the extension file. This allows the extension to perform
568// any necessary initialisation in the fully initialised environment
569foreach ( $wgExtensionFunctions as $func ) {
570 call_user_func( $func );
571}
572unset( $func ); // no global pollution; destroy reference
573
574// If the session user has a 0 id but a valid name, that means we need to
575// autocreate it.
576if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
577 $sessionUser = MediaWiki\Session\SessionManager::getGlobalSession()->getUser();
578 if ( $sessionUser->getId() === 0 &&
579 MediaWikiServices::getInstance()->getUserNameUtils()->isValid( $sessionUser->getName() )
580 ) {
581 $res = MediaWikiServices::getInstance()->getAuthManager()->autoCreateUser(
582 $sessionUser,
583 MediaWiki\Auth\AuthManager::AUTOCREATE_SOURCE_SESSION,
584 true
585 );
586 \MediaWiki\Logger\LoggerFactory::getInstance( 'authevents' )->info( 'Autocreation attempt', [
587 'event' => 'autocreate',
588 'successful' => $res->isGood(),
589 'status' => ( $res->getErrorsArray() ?: $res->getWarningsArray() )[0][0] ?? '-',
590 ] );
591 unset( $res );
592 }
593 unset( $sessionUser );
594}
595
596// Optimization: Avoid overhead from DeferredUpdates and Pingback deps when turned off.
598 // NOTE: Do not refactor to inject Config or otherwise make unconditional service call.
599 //
600 // On a plain install of MediaWiki, Pingback is likely the *only* feature
601 // involving DeferredUpdates or DB_PRIMARY on a regular page view.
602 // To allow for error recovery and fault isolation, let admins turn this
603 // off completely. (T269516)
604 DeferredUpdates::addCallableUpdate( static function () {
605 MediaWikiServices::getInstance()->getPingback()->run();
606 } );
607}
608
610if ( $settingsWarnings ) {
611 $logger = LoggerFactory::getInstance( 'Settings' );
612 foreach ( $settingsWarnings as $msg ) {
613 $logger->warning( $msg );
614 }
615 unset( $logger );
616}
617
618unset( $settingsWarnings );
619
620// Explicit globals, so this works with bootstrap.php
623
624// T264370
625if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
626 MediaWiki\Session\SessionManager::singleton()->logPotentialSessionLeakage();
627}
getUser()
wfDetectLocalSettingsFile(?string $installationPath=null)
Decide and remember where to load LocalSettings from.
wfDetectInstallPath()
Decide and remember where mediawiki is installed.
const MW_VERSION
The running version of MediaWiki.
Definition Defines.php:36
wfParseUrl( $url)
parse_url() work-alike, but non-broken.
wfTempDir()
Tries to get the system directory for temporary files.
wfWarn( $msg, $callerOffset=1, $level=E_USER_NOTICE)
Send a warning either to the debug log or in a PHP error depending on $wgDevelopmentWarnings.
wfMemoryLimit( $newLimit)
Raise PHP's memory limit (if needed).
wfIniGetBool( $setting)
Safety wrapper around ini_get() for boolean settings.
wfDebugLog( $logGroup, $text, $dest='all', array $context=[])
Send a line to a supplementary debug log file, if configured, or main debug log if not.
if(!defined( 'MEDIAWIKI')) if(ini_get('mbstring.func_overload')) if(!defined( 'MW_ENTRY_POINT')) global $IP
Environment checks.
Definition Setup.php:96
global $wgRequest
Definition Setup.php:414
if(defined( 'MW_SETUP_CALLBACK')) $dynamicDefaults
Customization point after most things are loaded (constants, functions, classes, LocalSettings.
Definition Setup.php:250
$wgUser
Definition Setup.php:542
if( $wgCanonicalServer===false) $wgVirtualRestConfig['global']['domain']
Definition Setup.php:361
$wgAutoloadClasses
Definition Setup.php:146
$serverParts
Definition Setup.php:363
global $wgInitialSessionId
Definition Setup.php:414
if( $wgServer===false) global $wgHooks
Definition Setup.php:335
if(!defined( 'MW_NO_SESSION') &&! $wgCommandLineMode $wgLang
Definition Setup.php:535
if(!defined('MW_NO_SESSION') &&! $wgCommandLineMode) if(! $wgCommandLineMode && $wgPingback $settingsWarnings)
Definition Setup.php:609
if(!defined( 'MW_NO_SESSION') &&! $wgCommandLineMode $wgOut
Definition Setup.php:535
$wgConf
$wgConf hold the site configuration.
Definition Setup.php:144
if( $wgServerName !==false) $wgServerName
Definition Setup.php:368
if(!interface_exists(LoggerInterface::class)) $wgCommandLineMode
Pre-config setup: Before loading LocalSettings.php.
Definition Setup.php:137
if(!defined( 'MW_NO_SESSION') &&! $wgCommandLineMode $wgTitle
Definition Setup.php:535
$wgScopeTest
Definition Setup.php:185
global $wgFullyInitialised
Definition Setup.php:563
global $wgExtensionFunctions
Definition Setup.php:563
$wgSettings
Definition Setup.php:148
const MW_ENTRY_POINT
Definition api.php:44
static addCallableUpdate( $callable, $stage=self::POSTSEND, $dbw=null)
Add an update to the pending update queue that invokes the specified callback when run.
Abort the web request with a custom HTML string that will represent the entire response.
Show an error that looks like an HTTP server error.
Definition HttpError.php:32
static setup()
Definition MWDebug.php:86
Configuration holder, particularly for multi-wiki sites.
This class provides an implementation of the core hook interfaces, forwarding hook calls to HookConta...
Create PSR-3 logger objects.
A class containing constants representing the names of configuration variables.
This class contains schema declarations for all configuration variables known to MediaWiki core.
Service locator for MediaWiki core services.
Utility for loading LocalSettings files.
Builder class for constructing a Config object from a set of sources during bootstrap.
Settings loaded from a PHP file path as an array structure.
Constructs a settings array based on a PHP class by inspecting class members to construct a schema.
Utility for loading site-specific settings in a multi-tenancy ("wiki farm" or "wiki family") environm...
Stub object for the global user ($wgUser) that makes it possible to change the relevant underlying ob...
Stub object for the user language.
Represents a title within MediaWiki.
Definition Title.php:76
internal since 1.36
Definition User.php:98
static newFromKey( $key,... $params)
Factory function that is just wrapper for the real constructor.
Definition Message.php:404
Thrown when ExtensionRegistry cannot open the extension.json or skin.json file.
render()
Output an error response and exit.
static init(array $profilerConf)
Definition Profiler.php:68
static getMain()
Get the RequestContext object associated with the main request.
$wgMemoryLimit
Config variable stub for the MemoryLimit setting, for use by phpdoc and IDEs.
$wgEmergencyContact
Config variable stub for the EmergencyContact setting, for use by phpdoc and IDEs.
$wgSharedTables
Config variable stub for the SharedTables setting, for use by phpdoc and IDEs.
$wgSessionName
Config variable stub for the SessionName setting, for use by phpdoc and IDEs.
$wgLogExceptionBacktrace
Config variable stub for the LogExceptionBacktrace setting, for use by phpdoc and IDEs.
$wgTmpDirectory
Config variable stub for the TmpDirectory setting, for use by phpdoc and IDEs.
$wgNoReplyAddress
Config variable stub for the NoReplyAddress setting, for use by phpdoc and IDEs.
$wgProfiler
Config variable stub for the Profiler setting, for use by phpdoc and IDEs.
$wgBaseDirectory
Config variable stub for the BaseDirectory setting, for use by phpdoc and IDEs.
$wgSecureLogin
Config variable stub for the SecureLogin setting, for use by phpdoc and IDEs.
$wgLocaltimezone
Config variable stub for the Localtimezone setting, for use by phpdoc and IDEs.
$wgShowExceptionDetails
Config variable stub for the ShowExceptionDetails setting, for use by phpdoc and IDEs.
$wgRequestTimeLimit
Config variable stub for the RequestTimeLimit setting, for use by phpdoc and IDEs.
$wgSharedDB
Config variable stub for the SharedDB setting, for use by phpdoc and IDEs.
$wgCanonicalServer
Config variable stub for the CanonicalServer setting, for use by phpdoc and IDEs.
$wgServer
Config variable stub for the Server setting, for use by phpdoc and IDEs.
$wgPropagateErrors
Config variable stub for the PropagateErrors setting, for use by phpdoc and IDEs.
$wgSharedSchema
Config variable stub for the SharedSchema setting, for use by phpdoc and IDEs.
$wgPasswordSender
Config variable stub for the PasswordSender setting, for use by phpdoc and IDEs.
$wgPingback
Config variable stub for the Pingback setting, for use by phpdoc and IDEs.
$wgCookiePrefix
Config variable stub for the CookiePrefix setting, for use by phpdoc and IDEs.
$wgSharedPrefix
Config variable stub for the SharedPrefix setting, for use by phpdoc and IDEs.
$wgPHPSessionHandling
Config variable stub for the PHPSessionHandling setting, for use by phpdoc and IDEs.
const MW_CONFIG_CALLBACK
Definition install.php:29
A helper class for throttling authentication attempts.