MediaWiki  1.34.4
Setup.php
Go to the documentation of this file.
1 <?php
29 
34 if ( !defined( 'MEDIAWIKI' ) ) {
35  exit( 1 );
36 }
37 
38 // Check to see if we are at the file scope
39 $wgScopeTest = 'MediaWiki Setup.php scope test';
40 if ( !isset( $GLOBALS['wgScopeTest'] ) || $GLOBALS['wgScopeTest'] !== $wgScopeTest ) {
41  echo "Error, Setup.php must be included from the file scope.\n";
42  die( 1 );
43 }
44 unset( $wgScopeTest );
45 
50 // Sanity check (T5782, T122807)
51 if ( ini_get( 'mbstring.func_overload' ) ) {
52  die( 'MediaWiki does not support installations where mbstring.func_overload is non-zero.' );
53 }
54 
55 // Define MW_ENTRY_POINT if it's not already, so that config code can check the
56 // value without using defined()
57 if ( !defined( 'MW_ENTRY_POINT' ) ) {
63  define( 'MW_ENTRY_POINT', 'unknown' );
64 }
65 
66 // Start the autoloader, so that extensions can derive classes from core files
67 require_once "$IP/includes/AutoLoader.php";
68 
69 // Load global constants
70 require_once "$IP/includes/Defines.php";
71 
72 // Load default settings
73 require_once "$IP/includes/DefaultSettings.php";
74 
75 // Load global functions
76 require_once "$IP/includes/GlobalFunctions.php";
77 
78 // Load composer's autoloader if present
79 if ( is_readable( "$IP/vendor/autoload.php" ) ) {
80  require_once "$IP/vendor/autoload.php";
81 } elseif ( file_exists( "$IP/vendor/autoload.php" ) ) {
82  die( "$IP/vendor/autoload.php exists but is not readable" );
83 }
84 
85 // Assert that composer dependencies were successfully loaded
86 // Purposely no leading \ due to it breaking HHVM RepoAuthorative mode
87 // PHP works fine with both versions
88 // See https://github.com/facebook/hhvm/issues/5833
89 if ( !interface_exists( 'Psr\Log\LoggerInterface' ) ) {
90  $message = (
91  'MediaWiki requires the <a href="https://github.com/php-fig/log">PSR-3 logging ' .
92  "library</a> to be present. This library is not embedded directly in MediaWiki's " .
93  "git repository and must be installed separately by the end user.\n\n" .
94  'Please see <a href="https://www.mediawiki.org/wiki/Download_from_Git' .
95  '#Fetch_external_libraries">mediawiki.org</a> for help on installing ' .
96  'the required components.'
97  );
98  echo $message;
99  trigger_error( $message, E_USER_ERROR );
100  die( 1 );
101 }
102 
107 // Install a header callback
109 
110 // Set the encoding used by PHP for reading HTTP input, and writing output.
111 // This is also the default for mbstring functions.
112 mb_internal_encoding( 'UTF-8' );
113 
118 if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
119  call_user_func( MW_CONFIG_CALLBACK );
120 } else {
121  if ( !defined( 'MW_CONFIG_FILE' ) ) {
122  define( 'MW_CONFIG_FILE', "$IP/LocalSettings.php" );
123  }
124  require_once MW_CONFIG_FILE;
125 }
126 
134 if ( defined( 'MW_SETUP_CALLBACK' ) ) {
135  call_user_func( MW_SETUP_CALLBACK );
136 }
137 
142 // Load queued extensions
143 ExtensionRegistry::getInstance()->loadFromQueue();
144 // Don't let any other extensions load
146 
147 // Set the configured locale on all requests for consisteny
148 putenv( "LC_ALL=$wgShellLocale" );
149 setlocale( LC_ALL, $wgShellLocale );
150 
151 // Set various default paths sensibly...
152 if ( $wgScript === false ) {
153  $wgScript = "$wgScriptPath/index.php";
154 }
155 if ( $wgLoadScript === false ) {
156  $wgLoadScript = "$wgScriptPath/load.php";
157 }
158 if ( $wgRestPath === false ) {
159  $wgRestPath = "$wgScriptPath/rest.php";
160 }
161 
162 if ( $wgArticlePath === false ) {
163  if ( $wgUsePathInfo ) {
164  $wgArticlePath = "$wgScript/$1";
165  } else {
166  $wgArticlePath = "$wgScript?title=$1";
167  }
168 }
169 
170 if ( $wgResourceBasePath === null ) {
172 }
173 if ( $wgStylePath === false ) {
174  $wgStylePath = "$wgResourceBasePath/skins";
175 }
176 if ( $wgLocalStylePath === false ) {
177  // Avoid wgResourceBasePath here since that may point to a different domain (e.g. CDN)
178  $wgLocalStylePath = "$wgScriptPath/skins";
179 }
180 if ( $wgExtensionAssetsPath === false ) {
181  $wgExtensionAssetsPath = "$wgResourceBasePath/extensions";
182 }
183 
184 if ( $wgLogo === false ) {
185  $wgLogo = "$wgResourceBasePath/resources/assets/wiki.png";
186 }
187 
188 if ( $wgUploadPath === false ) {
189  $wgUploadPath = "$wgScriptPath/images";
190 }
191 if ( $wgUploadDirectory === false ) {
192  $wgUploadDirectory = "$IP/images";
193 }
194 if ( $wgReadOnlyFile === false ) {
195  $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR";
196 }
197 if ( $wgFileCacheDirectory === false ) {
198  $wgFileCacheDirectory = "{$wgUploadDirectory}/cache";
199 }
200 if ( $wgDeletedDirectory === false ) {
201  $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
202 }
203 
204 if ( $wgGitInfoCacheDirectory === false && $wgCacheDirectory !== false ) {
205  $wgGitInfoCacheDirectory = "{$wgCacheDirectory}/gitinfo";
206 }
207 
208 // Fix path to icon images after they were moved in 1.24
209 if ( $wgRightsIcon ) {
210  $wgRightsIcon = str_replace(
211  "{$wgStylePath}/common/images/",
212  "{$wgResourceBasePath}/resources/assets/licenses/",
214  );
215 }
216 
217 if ( isset( $wgFooterIcons['copyright']['copyright'] )
218  && $wgFooterIcons['copyright']['copyright'] === []
219 ) {
220  if ( $wgRightsIcon || $wgRightsText ) {
221  $wgFooterIcons['copyright']['copyright'] = [
222  'url' => $wgRightsUrl,
223  'src' => $wgRightsIcon,
224  'alt' => $wgRightsText,
225  ];
226  }
227 }
228 
229 if ( isset( $wgFooterIcons['poweredby'] )
230  && isset( $wgFooterIcons['poweredby']['mediawiki'] )
231  && $wgFooterIcons['poweredby']['mediawiki']['src'] === null
232 ) {
233  $wgFooterIcons['poweredby']['mediawiki']['src'] =
234  "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png";
235  $wgFooterIcons['poweredby']['mediawiki']['srcset'] =
236  "$wgResourceBasePath/resources/assets/poweredby_mediawiki_132x47.png 1.5x, " .
237  "$wgResourceBasePath/resources/assets/poweredby_mediawiki_176x62.png 2x";
238 }
239 
248 
256 
261  'name' => 'fsLockManager',
262  'class' => FSLockManager::class,
263  'lockDirectory' => "{$wgUploadDirectory}/lockdir",
264 ];
265 $wgLockManagers[] = [
266  'name' => 'nullLockManager',
267  'class' => NullLockManager::class,
268 ];
269 
275  'imagesPerRow' => 0,
276  'imageWidth' => 120,
277  'imageHeight' => 120,
278  'captionLength' => true,
279  'showBytes' => true,
280  'showDimensions' => true,
281  'mode' => 'traditional',
282 ];
283 
287 if ( !$wgLocalFileRepo ) {
288  $wgLocalFileRepo = [
289  'class' => LocalRepo::class,
290  'name' => 'local',
291  'directory' => $wgUploadDirectory,
292  'scriptDirUrl' => $wgScriptPath,
294  'hashLevels' => $wgHashedUploadDirectory ? 2 : 0,
295  'thumbScriptUrl' => $wgThumbnailScriptPath,
296  'transformVia404' => !$wgGenerateThumbnailOnParse,
297  'deletedDir' => $wgDeletedDirectory,
298  'deletedHashLevels' => $wgHashedUploadDirectory ? 3 : 0
299  ];
300 }
301 
302 if ( !isset( $wgLocalFileRepo['backend'] ) ) {
303  // Create a default FileBackend name.
304  // FileBackendGroup will register a default, if absent from $wgFileBackends.
305  $wgLocalFileRepo['backend'] = $wgLocalFileRepo['name'] . '-backend';
306 }
307 
311 if ( $wgUseSharedUploads ) {
312  if ( $wgSharedUploadDBname ) {
313  $wgForeignFileRepos[] = [
314  'class' => ForeignDBRepo::class,
315  'name' => 'shared',
316  'directory' => $wgSharedUploadDirectory,
317  'url' => $wgSharedUploadPath,
318  'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
319  'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
320  'transformVia404' => !$wgGenerateThumbnailOnParse,
321  'dbType' => $wgDBtype,
322  'dbServer' => $wgDBserver,
323  'dbUser' => $wgDBuser,
324  'dbPassword' => $wgDBpassword,
325  'dbName' => $wgSharedUploadDBname,
326  'dbFlags' => ( $wgDebugDumpSql ? DBO_DEBUG : 0 ) | DBO_DEFAULT,
327  'tablePrefix' => $wgSharedUploadDBprefix,
328  'hasSharedCache' => $wgCacheSharedUploads,
329  'descBaseUrl' => $wgRepositoryBaseUrl,
330  'fetchDescription' => $wgFetchCommonsDescriptions,
331  ];
332  } else {
333  $wgForeignFileRepos[] = [
334  'class' => FileRepo::class,
335  'name' => 'shared',
336  'directory' => $wgSharedUploadDirectory,
337  'url' => $wgSharedUploadPath,
338  'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
339  'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
340  'transformVia404' => !$wgGenerateThumbnailOnParse,
341  'descBaseUrl' => $wgRepositoryBaseUrl,
342  'fetchDescription' => $wgFetchCommonsDescriptions,
343  ];
344  }
345 }
346 if ( $wgUseInstantCommons ) {
347  $wgForeignFileRepos[] = [
348  'class' => ForeignAPIRepo::class,
349  'name' => 'wikimediacommons',
350  'apibase' => 'https://commons.wikimedia.org/w/api.php',
351  'url' => 'https://upload.wikimedia.org/wikipedia/commons',
352  'thumbUrl' => 'https://upload.wikimedia.org/wikipedia/commons/thumb',
353  'hashLevels' => 2,
354  'transformVia404' => true,
355  'fetchDescription' => true,
356  'descriptionCacheExpiry' => 43200,
357  'apiThumbCacheExpiry' => 0,
358  ];
359 }
360 foreach ( $wgForeignFileRepos as &$repo ) {
361  if ( !isset( $repo['directory'] ) && $repo['class'] === ForeignAPIRepo::class ) {
362  $repo['directory'] = $wgUploadDirectory; // b/c
363  }
364  if ( !isset( $repo['backend'] ) ) {
365  $repo['backend'] = $repo['name'] . '-backend';
366  }
367 }
368 unset( $repo ); // no global pollution; destroy reference
369 
370 $rcMaxAgeDays = $wgRCMaxAge / ( 3600 * 24 );
371 // Ensure that default user options are not invalid, since that breaks Special:Preferences
372 $wgDefaultUserOptions['rcdays'] = min(
373  $wgDefaultUserOptions['rcdays'],
374  ceil( $rcMaxAgeDays )
375 );
376 $wgDefaultUserOptions['watchlistdays'] = min(
377  $wgDefaultUserOptions['watchlistdays'],
378  ceil( $rcMaxAgeDays )
379 );
380 unset( $rcMaxAgeDays );
381 
382 if ( $wgSkipSkin ) {
383  // Hard deprecated in 1.34.
384  wfDeprecated( '$wgSkipSkin – use $wgSkipSkins instead', '1.23' );
386 }
387 
388 $wgSkipSkins[] = 'fallback';
389 $wgSkipSkins[] = 'apioutput';
390 
391 if ( $wgLocalInterwiki ) {
392  // Hard deprecated in 1.34.
393  wfDeprecated( '$wgLocalInterwiki – use $wgLocalInterwikis instead', '1.23' );
394  array_unshift( $wgLocalInterwikis, $wgLocalInterwiki );
395 }
396 
397 // Set default shared prefix
398 if ( $wgSharedPrefix === false ) {
400 }
401 
402 // Set default shared schema
403 if ( $wgSharedSchema === false ) {
405 }
406 
407 if ( !$wgCookiePrefix ) {
408  if ( $wgSharedDB && $wgSharedPrefix && in_array( 'user', $wgSharedTables ) ) {
410  } elseif ( $wgSharedDB && in_array( 'user', $wgSharedTables ) ) {
412  } elseif ( $wgDBprefix ) {
414  } else {
416  }
417 }
418 $wgCookiePrefix = strtr( $wgCookiePrefix, '=,; +."\'\\[', '__________' );
419 
420 if ( $wgEnableEmail ) {
422 } else {
423  // Disable all other email settings automatically if $wgEnableEmail
424  // is set to false. - T65678
425  $wgAllowHTMLEmail = false;
426  $wgEmailAuthentication = false; // do not require auth if you're not sending email anyway
436  unset( $wgGroupPermissions['user']['sendemail'] );
437  $wgUseEnotif = false;
440 }
441 
442 // $wgSysopEmailBans deprecated in 1.34
443 if ( isset( $wgSysopEmailBans ) && $wgSysopEmailBans === false ) {
444  wfDeprecated( 'wgSysopEmailBans', '1.34' );
445  foreach ( $wgGroupPermissions as $group => $_ ) {
446  unset( $wgGroupPermissions[$group]['blockemail'] );
447  }
448 }
449 
450 if ( $wgMetaNamespace === false ) {
451  $wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
452 }
453 
454 // Ensure the minimum chunk size is less than PHP upload limits or the maximum
455 // upload size.
461  ini_get( 'post_max_size' ) ?: ini_get( 'hhvm.server.max_post_size' ),
462  PHP_INT_MAX
463  ) ?: PHP_INT_MAX ) - 1024 // Leave some room for other POST parameters
464 );
465 
471 
473 if ( is_array( $wgExtraNamespaces ) ) {
475 }
476 
477 // Hard-deprecate setting $wgDummyLanguageCodes in LocalSettings.php
478 if ( count( $wgDummyLanguageCodes ) !== 0 ) {
479  wfDeprecated( '$wgDummyLanguageCodes', '1.29' );
480 }
481 // Merge in the legacy language codes, incorporating overrides from the config
483  // Internal language codes of the private-use area which get mapped to
484  // themselves.
485  'qqq' => 'qqq', // Used for message documentation
486  'qqx' => 'qqx', // Used for viewing message keys
488 // Merge in (inverted) BCP 47 mappings
489 foreach ( LanguageCode::getNonstandardLanguageCodeMapping() as $code => $bcp47 ) {
490  $bcp47 = strtolower( $bcp47 ); // force case-insensitivity
491  if ( !isset( $wgDummyLanguageCodes[$bcp47] ) ) {
492  $wgDummyLanguageCodes[$bcp47] = $wgDummyLanguageCodes[$code] ?? $code;
493  }
494 }
495 
496 // These are now the same, always
497 // To determine the user language, use $wgLang->getCode()
499 
500 // Temporary backwards-compatibility reading of old Squid-named CDN settings as of MediaWiki 1.34,
501 // to support sysadmins who fail to update their settings immediately:
502 
503 if ( isset( $wgUseSquid ) ) {
504  // If the sysadmin is still setting a value of $wgUseSquid to true but $wgUseCdn is the default of
505  // false, to be safe, assume they do want this still, so enable it.
506  if ( !$wgUseCdn && $wgUseSquid ) {
507  $wgUseCdn = $wgUseSquid;
508  wfDeprecated( '$wgUseSquid enabled but $wgUseCdn disabled; enabling CDN functions', '1.34' );
509  }
510 } else {
511  // Backwards-compatibility for extensions that read this value.
512  $wgUseSquid = $wgUseCdn;
513 }
514 
515 if ( isset( $wgSquidServers ) ) {
516  // If the sysadmin is still setting a value of $wgSquidServers but $wgCdnServers is the default of
517  // empty, to be safe, assume they do want these servers to be still used, so use them.
518  if ( !empty( $wgSquidServers ) && empty( $wgCdnServers ) ) {
519  $wgCdnServers = $wgSquidServers;
520  wfDeprecated( '$wgSquidServers set, $wgCdnServers empty; using them', '1.34' );
521  }
522 } else {
523  // Backwards-compatibility for extensions that read this value.
524  $wgSquidServers = $wgCdnServers;
525 }
526 
527 if ( isset( $wgSquidServersNoPurge ) ) {
528  // If the sysadmin is still setting values in $wgSquidServersNoPurge but $wgCdnServersNoPurge is
529  // the default of empty, to be safe, assume they do want these servers to be still used, so use
530  // them.
531  if ( !empty( $wgSquidServersNoPurge ) && empty( $wgCdnServersNoPurge ) ) {
532  $wgCdnServersNoPurge = $wgSquidServersNoPurge;
533  wfDeprecated( '$wgSquidServersNoPurge set, $wgCdnServersNoPurge empty; using them', '1.34' );
534  }
535 } else {
536  // Backwards-compatibility for extensions that read this value.
537  $wgSquidServersNoPurge = $wgCdnServersNoPurge;
538 }
539 
540 if ( isset( $wgSquidMaxage ) ) {
541  // If the sysadmin is still setting a value of $wgSquidMaxage and it's higher than $wgCdnMaxAge,
542  // to be safe, assume they want the higher (lower performance requirement) value, so use that.
543  if ( $wgCdnMaxAge < $wgSquidMaxage ) {
544  $wgCdnMaxAge = $wgSquidMaxage;
545  wfDeprecated( '$wgSquidMaxage set higher than $wgCdnMaxAge; using the higher value', '1.34' );
546  }
547 } else {
548  // Backwards-compatibility for extensions that read this value.
549  $wgSquidMaxage = $wgCdnMaxAge;
550 }
551 
552 // Blacklisted file extensions shouldn't appear on the "allowed" list
553 $wgFileExtensions = array_values( array_diff( $wgFileExtensions, $wgFileBlacklist ) );
554 
556  Wikimedia\suppressWarnings();
557  $wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', filemtime( "$IP/LocalSettings.php" ) ) );
558  Wikimedia\restoreWarnings();
559 }
560 
561 if ( $wgNewUserLog ) {
562  // Add new user log type
563  $wgLogTypes[] = 'newusers';
564  $wgLogNames['newusers'] = 'newuserlogpage';
565  $wgLogHeaders['newusers'] = 'newuserlogpagetext';
566  $wgLogActionsHandlers['newusers/newusers'] = NewUsersLogFormatter::class;
567  $wgLogActionsHandlers['newusers/create'] = NewUsersLogFormatter::class;
568  $wgLogActionsHandlers['newusers/create2'] = NewUsersLogFormatter::class;
569  $wgLogActionsHandlers['newusers/byemail'] = NewUsersLogFormatter::class;
570  $wgLogActionsHandlers['newusers/autocreate'] = NewUsersLogFormatter::class;
571 }
572 
573 if ( $wgPageCreationLog ) {
574  // Add page creation log type
575  $wgLogTypes[] = 'create';
576  $wgLogActionsHandlers['create/create'] = LogFormatter::class;
577 }
578 
579 if ( $wgPageLanguageUseDB ) {
580  $wgLogTypes[] = 'pagelang';
581  $wgLogActionsHandlers['pagelang/pagelang'] = PageLangLogFormatter::class;
582 }
583 
584 if ( $wgCookieSecure === 'detect' ) {
586 }
587 
588 if ( $wgProfileOnly ) {
589  // Hard deprecated in 1.34.
590  wfDeprecated(
591  '$wgProfileOnly set the log file in $wgDebugLogGroups[\'profileoutput\'] instead',
592  '1.23'
593  );
594  $wgDebugLogGroups['profileoutput'] = $wgDebugLogFile;
595  $wgDebugLogFile = '';
596 }
597 
598 // Backwards compatibility with old password limits
599 if ( $wgMinimalPasswordLength !== false ) {
600  $wgPasswordPolicy['policies']['default']['MinimalPasswordLength'] = $wgMinimalPasswordLength;
601 }
602 
603 if ( $wgMaximalPasswordLength !== false ) {
604  $wgPasswordPolicy['policies']['default']['MaximalPasswordLength'] = $wgMaximalPasswordLength;
605 }
606 
607 if ( $wgPHPSessionHandling !== 'enable' &&
608  $wgPHPSessionHandling !== 'warn' &&
609  $wgPHPSessionHandling !== 'disable'
610 ) {
611  $wgPHPSessionHandling = 'warn';
612 }
613 if ( defined( 'MW_NO_SESSION' ) ) {
614  // If the entry point wants no session, force 'disable' here unless they
615  // specifically set it to the (undocumented) 'warn'.
616  // @phan-suppress-next-line PhanUndeclaredConstant
617  $wgPHPSessionHandling = MW_NO_SESSION === 'warn' ? 'warn' : 'disable';
618 }
619 
621 
622 // Reset the global service locator, so any services that have already been created will be
623 // re-created while taking into account any custom settings and extensions.
624 MediaWikiServices::resetGlobalInstance( new GlobalVarConfig(), 'quick' );
625 
626 // Define a constant that indicates that the bootstrapping of the service locator
627 // is complete.
628 define( 'MW_SERVICE_BOOTSTRAP_COMPLETE', 1 );
629 
631 
632 // T30798: $wgServer must be explicitly set
633 if ( $wgServer === false ) {
634  throw new FatalError(
635  '$wgServer must be set in LocalSettings.php. ' .
636  'See <a href="https://www.mediawiki.org/wiki/Manual:$wgServer">' .
637  'https://www.mediawiki.org/wiki/Manual:$wgServer</a>.'
638  );
639 }
640 
641 // T48998: Bail out early if $wgArticlePath is non-absolute
642 foreach ( [ 'wgArticlePath', 'wgVariantArticlePath' ] as $varName ) {
643  if ( $$varName && !preg_match( '/^(https?:\/\/|\/)/', $$varName ) ) {
644  throw new FatalError(
645  "If you use a relative URL for \$$varName, it must start " .
646  'with a slash (<code>/</code>).<br><br>See ' .
647  "<a href=\"https://www.mediawiki.org/wiki/Manual:\$$varName\">" .
648  "https://www.mediawiki.org/wiki/Manual:\$$varName</a>."
649  );
650  }
651 }
652 
653 if ( $wgCanonicalServer === false ) {
655 }
656 
657 // Set server name
659 if ( $wgServerName !== false ) {
660  wfWarn( '$wgServerName should be derived from $wgCanonicalServer, '
661  . 'not customized. Overwriting $wgServerName.' );
662 }
664 unset( $serverParts );
665 
666 // Set defaults for configuration variables
667 // that are derived from the server name by default
668 // Note: $wgEmergencyContact and $wgPasswordSender may be false or empty string (T104142)
669 if ( !$wgEmergencyContact ) {
670  $wgEmergencyContact = 'wikiadmin@' . $wgServerName;
671 }
672 if ( !$wgPasswordSender ) {
673  $wgPasswordSender = 'apache@' . $wgServerName;
674 }
675 if ( !$wgNoReplyAddress ) {
677 }
678 
679 if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
680  $wgSecureLogin = false;
681  wfWarn( 'Secure login was enabled on a server that only supports '
682  . 'HTTP or HTTPS. Disabling secure login.' );
683 }
684 
686 
687 // Now that GlobalFunctions is loaded, set defaults that depend on it.
688 if ( $wgTmpDirectory === false ) {
690 }
691 
692 // We don't use counters anymore. Left here for extensions still
693 // expecting this to exist. Should be removed sometime 1.26 or later.
694 if ( !isset( $wgDisableCounters ) ) {
695  $wgDisableCounters = true;
696 }
697 
698 if ( $wgMainWANCache === false ) {
699  // Setup a WAN cache from $wgMainCacheType with no relayer.
700  // Sites using multiple datacenters can configure a relayer.
701  $wgMainWANCache = 'mediawiki-main-default';
703  'class' => WANObjectCache::class,
704  'cacheId' => $wgMainCacheType
705  ];
706 }
707 
708 if ( $wgSharedDB && $wgSharedTables ) {
709  // Apply $wgSharedDB table aliases for the local LB (all non-foreign DB connections)
710  MediaWikiServices::getInstance()->getDBLoadBalancer()->setTableAliases(
711  array_fill_keys(
713  [
714  'dbname' => $wgSharedDB,
715  'schema' => $wgSharedSchema,
716  'prefix' => $wgSharedPrefix
717  ]
718  )
719  );
720 }
721 
722 // Raise the memory limit if it's too low
723 // Note, this makes use of wfDebug, and thus should not be before
724 // MWDebug::init() is called.
726 
732 if ( is_null( $wgLocaltimezone ) ) {
733  Wikimedia\suppressWarnings();
734  $wgLocaltimezone = date_default_timezone_get();
735  Wikimedia\restoreWarnings();
736 }
737 
738 date_default_timezone_set( $wgLocaltimezone );
739 if ( is_null( $wgLocalTZoffset ) ) {
740  $wgLocalTZoffset = (int)date( 'Z' ) / 60;
741 }
742 // The part after the System| is ignored, but rest of MW fills it
743 // out as the local offset.
744 $wgDefaultUserOptions['timecorrection'] = "System|$wgLocalTZoffset";
745 
746 if ( !$wgDBerrorLogTZ ) {
748 }
749 
750 // Initialize the request object in $wgRequest
751 $wgRequest = RequestContext::getMain()->getRequest(); // BackCompat
752 // Set user IP/agent information for agent session consistency purposes
753 $cpPosInfo = LBFactory::getCPInfoFromCookieValue(
754  // The cookie has no prefix and is set by MediaWiki::preOutputCommit()
755  $wgRequest->getCookie( 'cpPosIndex', '' ),
756  // Mitigate broken client-side cookie expiration handling (T190082)
757  time() - ChronologyProtector::POSITION_COOKIE_TTL
758 );
759 MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->setRequestInfo( [
760  'IPAddress' => $wgRequest->getIP(),
761  'UserAgent' => $wgRequest->getHeader( 'User-Agent' ),
762  'ChronologyProtection' => $wgRequest->getHeader( 'MediaWiki-Chronology-Protection' ),
763  'ChronologyPositionIndex' => $wgRequest->getInt( 'cpPosIndex', $cpPosInfo['index'] ),
764  'ChronologyClientId' => $cpPosInfo['clientId']
765  ?? $wgRequest->getHeader( 'MediaWiki-Chronology-Client-Id' )
766 ] );
767 unset( $cpPosInfo );
768 // Make sure that object caching does not undermine the ChronologyProtector improvements
769 if ( $wgRequest->getCookie( 'UseDC', '' ) === 'master' ) {
770  // The user is pinned to the primary DC, meaning that they made recent changes which should
771  // be reflected in their subsequent web requests. Avoid the use of interim cache keys because
772  // they use a blind TTL and could be stale if an object changes twice in a short time span.
773  MediaWikiServices::getInstance()->getMainWANObjectCache()->useInterimHoldOffCaching( false );
774 }
775 
776 // Useful debug output
777 if ( $wgCommandLineMode ) {
778  if ( isset( $self ) ) {
779  wfDebug( "\n\nStart command line script $self\n" );
780  }
781 } else {
782  $debug = "\n\nStart request {$wgRequest->getMethod()} {$wgRequest->getRequestURL()}\n";
783  $debug .= "HTTP HEADERS:\n";
784  foreach ( $wgRequest->getAllHeaders() as $name => $value ) {
785  $debug .= "$name: $value\n";
786  }
787  wfDebug( $debug );
788 }
789 
792 
793 // Most of the config is out, some might want to run hooks here.
794 Hooks::run( 'SetupAfterCache' );
795 
800 $wgContLang = MediaWikiServices::getInstance()->getContentLanguage();
801 
802 // Now that variant lists may be available...
803 $wgRequest->interpolateTitle();
804 
810 if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
811  // If session.auto_start is there, we can't touch session name
812  if ( $wgPHPSessionHandling !== 'disable' && !wfIniGetBool( 'session.auto_start' ) ) {
813  session_name( $wgSessionName ?: $wgCookiePrefix . '_session' );
814  }
815 
816  // Create the SessionManager singleton and set up our session handler,
817  // unless we're specifically asked not to.
818  if ( !defined( 'MW_NO_SESSION_HANDLER' ) ) {
820  MediaWiki\Session\SessionManager::singleton()
821  );
822  }
823 
824  // Initialize the session
825  try {
827  } catch ( MediaWiki\Session\SessionOverflowException $ex ) {
828  // The exception is because the request had multiple possible
829  // sessions tied for top priority. Report this to the user.
830  $list = [];
831  foreach ( $ex->getSessionInfos() as $info ) {
832  $list[] = $info->getProvider()->describe( $wgContLang );
833  }
834  $list = $wgContLang->listToText( $list );
835  throw new HttpError( 400,
836  Message::newFromKey( 'sessionmanager-tie', $list )->inLanguage( $wgContLang )->plain()
837  );
838  }
839 
840  if ( $session->isPersistent() ) {
841  $wgInitialSessionId = $session->getSessionId();
842  }
843 
844  $session->renew();
845  if ( MediaWiki\Session\PHPSessionHandler::isEnabled() &&
846  ( $session->isPersistent() || $session->shouldRememberUser() ) &&
847  session_id() !== $session->getId()
848  ) {
849  // Start the PHP-session for backwards compatibility
850  if ( session_id() !== '' ) {
851  wfDebugLog( 'session', 'PHP session {old_id} was already started, changing to {new_id}', 'all', [
852  'old_id' => session_id(),
853  'new_id' => $session->getId(),
854  ] );
855  session_write_close();
856  }
857  session_id( $session->getId() );
858  session_start();
859  }
860 
861  unset( $session );
862 } else {
863  // Even if we didn't set up a global Session, still install our session
864  // handler unless specifically requested not to.
865  if ( !defined( 'MW_NO_SESSION_HANDLER' ) ) {
867  MediaWiki\Session\SessionManager::singleton()
868  );
869  }
870 }
871 
875 $wgUser = RequestContext::getMain()->getUser(); // BackCompat
876 
881 
885 $wgOut = RequestContext::getMain()->getOutput(); // BackCompat
886 
891 $wgParser = new StubObject( 'wgParser', function () {
892  return MediaWikiServices::getInstance()->getParser();
893 } );
894 
898 $wgTitle = null;
899 
900 // Extension setup functions
901 // Entries should be added to this variable during the inclusion
902 // of the extension file. This allows the extension to perform
903 // any necessary initialisation in the fully initialised environment
904 foreach ( $wgExtensionFunctions as $func ) {
905  call_user_func( $func );
906 }
907 
908 // If the session user has a 0 id but a valid name, that means we need to
909 // autocreate it.
910 if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
911  $sessionUser = MediaWiki\Session\SessionManager::getGlobalSession()->getUser();
912  if ( $sessionUser->getId() === 0 && User::isValidUserName( $sessionUser->getName() ) ) {
913  $res = MediaWiki\Auth\AuthManager::singleton()->autoCreateUser(
914  $sessionUser,
915  MediaWiki\Auth\AuthManager::AUTOCREATE_SOURCE_SESSION,
916  true
917  );
918  \MediaWiki\Logger\LoggerFactory::getInstance( 'authevents' )->info( 'Autocreation attempt', [
919  'event' => 'autocreate',
920  'status' => $res,
921  ] );
922  unset( $res );
923  }
924  unset( $sessionUser );
925 }
926 
927 if ( !$wgCommandLineMode ) {
929 }
930 
$wgCanonicalNamespaceNames
$wgCanonicalNamespaceNames
Definitions of the NS_ constants are in Defines.php.
Definition: Setup.php:470
$wgSharedUploadDirectory
string $wgSharedUploadDirectory
Shortcut for the 'directory' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:625
$wgLocalInterwiki
$wgLocalInterwiki
The interwiki prefix of the current wiki, or false if it doesn't have one.
Definition: DefaultSettings.php:3949
LanguageCode\getDeprecatedCodeMapping
static getDeprecatedCodeMapping()
Returns a mapping of deprecated language codes that were used in previous versions of MediaWiki to up...
Definition: LanguageCode.php:127
MediaWiki\HeaderCallback\register
static register()
Register a callback to be called when headers are sent.
Definition: HeaderCallback.php:19
MediaWiki\Session\PHPSessionHandler\install
static install(SessionManager $manager)
Install a session handler for the current web request.
Definition: PHPSessionHandler.php:111
$wgUseCdn
$wgUseCdn
Enable/disable CDN.
Definition: DefaultSettings.php:2772
$wgUsersNotifiedOnAllChanges
$wgUsersNotifiedOnAllChanges
Definition: Setup.php:439
$wgMaximalPasswordLength
$wgMaximalPasswordLength
Specifies the maximal length of a user password (T64685).
Definition: DefaultSettings.php:4723
MW_NO_SESSION
const MW_NO_SESSION
Definition: load.php:29
$wgDBserver
$wgDBserver
Database host name or IP address.
Definition: DefaultSettings.php:1939
$wgFileBlacklist
$wgFileBlacklist
Files with these extensions will never be allowed as uploads.
Definition: DefaultSettings.php:970
ObjectCache\getLocalClusterInstance
static getLocalClusterInstance()
Get the main cluster-local cache object.
Definition: ObjectCache.php:342
$wgCdnServers
$wgCdnServers
List of proxy servers to purge on changes; default port is 80.
Definition: DefaultSettings.php:2853
$wgProfileOnly
$wgProfileOnly
Don't put non-profiling info into log file.
Definition: DefaultSettings.php:6491
$wgCookiePrefix
if( $wgLocalInterwiki) if( $wgSharedPrefix===false) if( $wgSharedSchema===false) if(! $wgCookiePrefix) $wgCookiePrefix
Definition: Setup.php:418
$wgSysopEmailBans
$wgSysopEmailBans
Allow sysops to ban users from accessing Emailuser.
Definition: DefaultSettings.php:5023
$wgPageCreationLog
$wgPageCreationLog
Maintain a log of page creations at Special:Log/create?
Definition: DefaultSettings.php:7977
$wgParser
$wgParser
Definition: Setup.php:891
$wgEnotifFromEditor
$wgEnotifFromEditor
Definition: Setup.php:428
$wgInvalidateCacheOnLocalSettingsChange
$wgInvalidateCacheOnLocalSettingsChange
Invalidate various caches when LocalSettings.php changes.
Definition: DefaultSettings.php:2730
$wgRestPath
$wgRestPath
The URL path to the REST API Defaults to "{$wgScriptPath}/rest.php".
Definition: DefaultSettings.php:221
$wgGalleryOptions
$wgGalleryOptions
Default parameters for the "<gallery>" tag.
Definition: Setup.php:274
$wgTmpDirectory
$wgTmpDirectory
The local filesystem path to a temporary directory.
Definition: DefaultSettings.php:373
$wgRightsText
$wgRightsText
If either $wgRightsUrl or $wgRightsPage is specified then this variable gives the text for the link.
Definition: DefaultSettings.php:7218
$wgDBname
$wgDBname
Current wiki database name.
Definition: DefaultSettings.php:1914
$wgDefaultUserOptions
$wgDefaultUserOptions['rcdays']
Definition: Setup.php:372
$wgEnotifWatchlist
$wgEnotifWatchlist
Definition: Setup.php:435
$wgSharedTables
$wgSharedTables
Definition: DefaultSettings.php:2068
MediaWiki\MediaWikiServices
MediaWikiServices is the service locator for the application scope of MediaWiki.
Definition: MediaWikiServices.php:117
$wgSharedSchema
$wgSharedSchema
Definition: DefaultSettings.php:2074
StubObject
Class to implement stub globals, which are globals that delay loading the their associated module cod...
Definition: StubObject.php:45
$wgFileExtensions
$wgFileExtensions
Definition: Setup.php:553
$wgLogHeaders
$wgLogHeaders
Lists the message key string for descriptive text to be shown at the top of each log type.
Definition: DefaultSettings.php:7832
$wgUserEmailUseReplyTo
$wgUserEmailUseReplyTo
Definition: Setup.php:438
$wgScript
$wgScript
The URL path to index.php.
Definition: DefaultSettings.php:206
MediaWiki\Logger\LoggerFactory\getInstance
static getInstance( $channel)
Get a named logger instance from the currently configured logger factory.
Definition: LoggerFactory.php:92
$wgDBtype
$wgDBtype
Database type.
Definition: DefaultSettings.php:1959
$wgSharedDB
$wgSharedDB
Shared database for multiple wikis.
Definition: DefaultSettings.php:2058
$wgLocalFileRepo
$wgLocalFileRepo
File repository structures.
Definition: DefaultSettings.php:560
$wgWANObjectCaches
$wgWANObjectCaches
Advanced WAN object cache configuration.
Definition: DefaultSettings.php:2475
$wgSharedUploadDBname
bool string $wgSharedUploadDBname
Shortcut for the ForeignDBRepo 'dbName' setting in $wgForeignFileRepos.
Definition: DefaultSettings.php:670
DBO_DEBUG
const DBO_DEBUG
Definition: defines.php:9
wfMemoryLimit
wfMemoryLimit( $newLimit)
Raise PHP's memory limit (if needed).
Definition: GlobalFunctions.php:2751
UploadBase\getMaxPhpUploadSize
static getMaxPhpUploadSize()
Get the PHP maximum uploaded file size, based on ini settings.
Definition: UploadBase.php:2200
$wgDBmwschema
$wgDBmwschema
Current wiki database schema name.
Definition: DefaultSettings.php:1924
$wgNamespaceProtection
if( $wgScript===false) if( $wgLoadScript===false) if( $wgRestPath===false) if( $wgArticlePath===false) if( $wgResourceBasePath===null) if( $wgStylePath===false) if( $wgLocalStylePath===false) if( $wgExtensionAssetsPath===false) if( $wgLogo===false) if( $wgUploadPath===false) if( $wgUploadDirectory===false) if( $wgReadOnlyFile===false) if( $wgFileCacheDirectory===false) if( $wgDeletedDirectory===false) if( $wgGitInfoCacheDirectory===false && $wgCacheDirectory !==false) if( $wgRightsIcon) if(isset( $wgFooterIcons['copyright']['copyright']) && $wgFooterIcons['copyright']['copyright']===[]) if(isset( $wgFooterIcons['poweredby']) &&isset( $wgFooterIcons['poweredby']['mediawiki']) && $wgFooterIcons['poweredby']['mediawiki']['src']===null) $wgNamespaceProtection[NS_MEDIAWIKI]
Unconditional protection for NS_MEDIAWIKI since otherwise it's too easy for a sysadmin to set $wgName...
Definition: Setup.php:247
$wgVirtualRestConfig
if(! $wgEmergencyContact) if(! $wgPasswordSender) if(! $wgNoReplyAddress) if( $wgSecureLogin &&substr( $wgServer, 0, 2) !=='//') $wgVirtualRestConfig['global']['domain']
Definition: Setup.php:685
$wgGenerateThumbnailOnParse
$wgGenerateThumbnailOnParse
Allow thumbnail rendering on page view.
Definition: DefaultSettings.php:1339
$wgEnableUserEmail
$wgEnableUserEmail
Definition: Setup.php:427
NS_FILE
const NS_FILE
Definition: Defines.php:75
$wgExtensionAssetsPath
$wgExtensionAssetsPath
The URL path of the extensions directory.
Definition: DefaultSettings.php:243
MWExceptionHandler\installHandler
static installHandler()
Install handlers with PHP.
Definition: MWExceptionHandler.php:76
WebRequest\detectProtocol
static detectProtocol()
Detect the protocol from $_SERVER.
Definition: WebRequest.php:274
$wgScopeTest
if(!defined( 'MEDIAWIKI')) $wgScopeTest
This file is not a valid entry point, perform no further processing unless MEDIAWIKI is defined.
Definition: Setup.php:39
$wgCacheDirectory
$wgCacheDirectory
Directory for caching data in the local filesystem.
Definition: DefaultSettings.php:2347
User\isValidUserName
static isValidUserName( $name)
Is the input a valid username?
Definition: User.php:959
$res
$res
Definition: testCompression.php:52
$wgCdnMaxAge
$wgCdnMaxAge
Cache TTL for the CDN sent as s-maxage (without ESI) or Surrogate-Control (with ESI).
Definition: DefaultSettings.php:2803
$wgSharedThumbnailScriptPath
string $wgSharedThumbnailScriptPath
Shortcut for the 'thumbScriptUrl' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:938
$wgLogo
$wgLogo
The URL path of the wiki logo.
Definition: DefaultSettings.php:289
wfDebugLog
wfDebugLog( $logGroup, $text, $dest='all', array $context=[])
Send a line to a supplementary debug log file, if configured, or main debug log if not.
Definition: GlobalFunctions.php:1007
$wgMetaNamespace
$wgMetaNamespace
Name of the project namespace.
Definition: DefaultSettings.php:3851
HttpError
Show an error that looks like an HTTP server error.
Definition: HttpError.php:30
$wgDBpassword
$wgDBpassword
Database user's password.
Definition: DefaultSettings.php:1954
$wgDBprefix
$wgDBprefix
Current wiki database table name prefix.
Definition: DefaultSettings.php:1934
$wgFetchCommonsDescriptions
bool $wgFetchCommonsDescriptions
Shortcut for the 'fetchDescription' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:660
$wgStylePath
$wgStylePath
The URL path of the skins directory.
Definition: DefaultSettings.php:228
NamespaceInfo\$canonicalNames
static array $canonicalNames
Definitions of the NS_ constants are in Defines.php.
Definition: NamespaceInfo.php:62
$wgMemc
$wgMemc
Definition: Setup.php:790
$wgRepositoryBaseUrl
$wgRepositoryBaseUrl
Shortcut for the 'descBaseUrl' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:651
$rcMaxAgeDays
$rcMaxAgeDays
Definition: Setup.php:370
$wgMinUploadChunkSize
if(isset( $wgSysopEmailBans) && $wgSysopEmailBans===false) if( $wgMetaNamespace===false) $wgMinUploadChunkSize
Definition: Setup.php:456
$wgUseInstantCommons
$wgUseInstantCommons
Use Wikimedia Commons as a foreign file repository.
Definition: DefaultSettings.php:586
ExtensionRegistry\getInstance
static getInstance()
Definition: ExtensionRegistry.php:106
$wgHashedUploadDirectory
$wgHashedUploadDirectory
Set this to false if you do not want MediaWiki to divide your images directory into many subdirectori...
Definition: DefaultSettings.php:953
wfParseUrl
wfParseUrl( $url)
parse_url() work-alike, but non-broken.
Definition: GlobalFunctions.php:793
$wgHashedSharedUploadDirectory
bool $wgHashedSharedUploadDirectory
Shortcut for the 'hashLevels' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:643
$wgNoReplyAddress
$wgNoReplyAddress
Reply-To address for e-mail notifications.
Definition: DefaultSettings.php:1701
$wgEnotifMaxRecips
$wgEnotifMaxRecips
Definition: Setup.php:430
$wgEmergencyContact
$wgEmergencyContact
Site admin email address.
Definition: DefaultSettings.php:1684
wfDeprecated
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Throws a warning that $function is deprecated.
Definition: GlobalFunctions.php:1044
$wgFooterIcons
$wgFooterIcons
Abstract list of footer icons for skins in place of old copyrightico and poweredbyico code You can ad...
Definition: DefaultSettings.php:3506
$wgMainCacheType
$wgMainCacheType
Main cache type.
Definition: DefaultSettings.php:2366
$serverParts
if( $wgServer===false) foreach([ 'wgArticlePath', 'wgVariantArticlePath'] as $varName) if( $wgCanonicalServer===false) $serverParts
Definition: Setup.php:658
$wgCommandLineMode
global $wgCommandLineMode
Definition: DevelopmentSettings.php:29
$wgDebugLogGroups
$wgDebugLogGroups
Map of string log group names to log destinations.
Definition: DefaultSettings.php:6303
$wgLang
$wgLang
Definition: Setup.php:880
$wgDummyLanguageCodes
if(is_array( $wgExtraNamespaces)) if(count( $wgDummyLanguageCodes) !==0) $wgDummyLanguageCodes
Definition: Setup.php:482
MW_CONFIG_CALLBACK
const MW_CONFIG_CALLBACK
Definition: install.php:26
$wgEnotifUserTalk
$wgEnotifUserTalk
Definition: Setup.php:434
$wgLoadScript
$wgLoadScript
The URL path to load.php.
Definition: DefaultSettings.php:214
MediaWiki
This class serves as a utility class for this extension.
$wgSharedPrefix
$wgSharedPrefix
Definition: DefaultSettings.php:2063
$wgLogTypes
$wgLogTypes
The logging system has two levels: an event type, which describes the general category and can be vie...
Definition: DefaultSettings.php:7748
$wgEnotifUseRealName
$wgEnotifUseRealName
Definition: Setup.php:433
$wgEnableEmail
$wgEnableEmail
Set to true to enable the e-mail basic features: Password reminders, etc.
Definition: DefaultSettings.php:1708
GlobalVarConfig
Accesses configuration settings from $GLOBALS.
Definition: GlobalVarConfig.php:28
$wgSessionName
$wgSessionName
Override to customise the session name.
Definition: DefaultSettings.php:6125
MWDebug\setup
static setup()
Definition: MWDebug.php:73
$wgCdnServersNoPurge
$wgCdnServersNoPurge
As with $wgCdnServers, except these servers aren't purged on page changes; use to set a list of trust...
Definition: DefaultSettings.php:2863
$wgDebugLogFile
$wgDebugLogFile
Filename for debug logging.
Definition: DefaultSettings.php:6175
wfDebug
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
Definition: GlobalFunctions.php:913
$wgCanonicalServer
$wgCanonicalServer
Canonical URL of the server, to use in IRC feeds and notification e-mails.
Definition: DefaultSettings.php:115
$wgSkipSkin
$wgSkipSkin
Definition: DefaultSettings.php:3358
$wgEnotifRevealEditorAddress
$wgEnotifRevealEditorAddress
Definition: Setup.php:432
$wgMemoryLimit
$wgMemoryLimit
The minimum amount of memory that MediaWiki "needs"; MediaWiki will try to raise PHP's memory limit i...
Definition: DefaultSettings.php:2322
$wgLockManagers
$wgLockManagers[]
Initialise $wgLockManagers to include basic FS version.
Definition: Setup.php:260
$wgUseSharedUploads
bool $wgUseSharedUploads
Shortcut for adding an entry to $wgForeignFileRepos.
Definition: DefaultSettings.php:616
$wgFullyInitialised
foreach( $wgExtensionFunctions as $func) if(!defined( 'MW_NO_SESSION') &&! $wgCommandLineMode) if(! $wgCommandLineMode) $wgFullyInitialised
Definition: Setup.php:931
$wgPageLanguageUseDB
bool $wgPageLanguageUseDB
Enable page language feature Allows setting page language in database.
Definition: DefaultSettings.php:8784
$wgEnotifMinorEdits
$wgEnotifMinorEdits
Definition: Setup.php:431
MediaWiki\Session\SessionManager\getGlobalSession
static getGlobalSession()
Get the "global" session.
Definition: SessionManager.php:106
$wgTitle
$wgTitle
Definition: Setup.php:898
$messageMemc
$messageMemc
Definition: Setup.php:791
$wgLocalTZoffset
$wgLocalTZoffset
Set an offset from UTC in minutes to use for the default timezone setting for anonymous users and new...
Definition: DefaultSettings.php:3247
$wgForceHTTPS
bool $wgForceHTTPS
If this is true, when an insecure HTTP request is received, always redirect to HTTPS.
Definition: DefaultSettings.php:147
$wgNamespaceAliases
$wgNamespaceAliases['Image']
The canonical names of namespaces 6 and 7 are, as of v1.14, "File" and "File_talk".
Definition: Setup.php:254
$wgLocalInterwikis
$wgLocalInterwikis
Array for multiple $wgLocalInterwiki values, in case there are several interwiki prefixes that point ...
Definition: DefaultSettings.php:3959
$wgDeletedDirectory
$wgDeletedDirectory
What directory to place deleted uploads in.
Definition: DefaultSettings.php:458
$wgCacheSharedUploads
bool $wgCacheSharedUploads
Shortcut for the ForeignDBRepo 'hasSharedCache' setting in $wgForeignFileRepos.
Definition: DefaultSettings.php:688
StubUserLang
Stub object for the user language.
Definition: StubUserLang.php:24
$wgServer
$wgServer
URL of the server.
Definition: DefaultSettings.php:106
$wgRCMaxAge
$wgRCMaxAge
Recentchanges items are periodically purged; entries older than this many seconds will go.
Definition: DefaultSettings.php:6855
$wgLanguageCode
$wgLanguageCode
Site language code.
Definition: DefaultSettings.php:2969
$wgSitename
$wgSitename
Name of the site.
Definition: DefaultSettings.php:81
$wgRightsIcon
$wgRightsIcon
Override for copyright metadata.
Definition: DefaultSettings.php:7223
PROTO_HTTP
const PROTO_HTTP
Definition: Defines.php:208
$wgExtensionFunctions
$wgExtensionFunctions
A list of callback functions which are called once MediaWiki is fully initialised.
Definition: DefaultSettings.php:7346
$wgEmailAuthentication
$wgEmailAuthentication
Definition: Setup.php:426
$wgUploadBaseUrl
$wgUploadBaseUrl
If set, this URL is added to the start of $wgUploadPath to form a complete upload URL.
Definition: DefaultSettings.php:380
$wgUploadDirectory
$wgUploadDirectory
The filesystem path of the images directory.
Definition: DefaultSettings.php:277
$wgAllowHTMLEmail
$wgAllowHTMLEmail
For parts of the system that have been updated to provide HTML email content, send both text and HTML...
Definition: DefaultSettings.php:1800
RequestContext\getMain
static getMain()
Get the RequestContext object associated with the main request.
Definition: RequestContext.php:431
$wgLogActionsHandlers
$wgLogActionsHandlers
The same as above, but here values are names of classes, not messages.
Definition: DefaultSettings.php:7860
wfIniGetBool
wfIniGetBool( $setting)
Safety wrapper around ini_get() for boolean settings.
Definition: GlobalFunctions.php:2042
$wgResourceBasePath
$wgResourceBasePath
The default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
Definition: DefaultSettings.php:3709
UploadBase\getMaxUploadSize
static getMaxUploadSize( $forType=null)
Get the MediaWiki maximum uploaded file size for given type of upload, based on $wgMaxUploadSize.
Definition: UploadBase.php:2179
$wgUseEnotif
$wgUseEnotif
Definition: Setup.php:437
$wgArticlePath
$wgArticlePath
Definition: img_auth.php:47
$self
$self
Definition: doMaintenance.php:55
wfGetMessageCacheStorage
wfGetMessageCacheStorage()
Get the cache object used by the message cache.
Definition: GlobalFunctions.php:2847
$wgCacheEpoch
$wgCacheEpoch
Set this to current time to invalidate all prior cached pages.
Definition: DefaultSettings.php:2668
wfShorthandToInteger
wfShorthandToInteger( $string='', $default=-1)
Converts shorthand byte notation to integer form.
Definition: GlobalFunctions.php:2797
$wgGitInfoCacheDirectory
$wgGitInfoCacheDirectory
Directory where GitInfo will look for pre-computed cache files.
Definition: DefaultSettings.php:2674
$debug
$debug
Definition: Setup.php:783
Message\newFromKey
static newFromKey( $key,... $params)
Factory function that is just wrapper for the real constructor.
Definition: Message.php:410
wfTempDir
wfTempDir()
Tries to get the system directory for temporary files.
Definition: GlobalFunctions.php:1927
$wgReadOnlyFile
$wgReadOnlyFile
If this lock file exists (size > 0), the wiki will be forced into read-only mode.
Definition: DefaultSettings.php:6805
$wgSkipSkins
if( $wgSkipSkin) $wgSkipSkins[]
Definition: Setup.php:388
MediaWiki\Auth\AuthManager\singleton
static singleton()
Get the global AuthManager.
Definition: AuthManager.php:155
$wgThumbnailScriptPath
$wgThumbnailScriptPath
Give a path here to use thumb.php for thumbnail generation on client request, instead of generating t...
Definition: DefaultSettings.php:929
$wgContLanguageCode
foreach(LanguageCode::getNonstandardLanguageCodeMapping() as $code=> $bcp47) $wgContLanguageCode
Definition: Setup.php:498
Wikimedia\Rdbms\ChronologyProtector
Helper class for mitigating DB replication lag in order to provide "session consistency".
Definition: ChronologyProtector.php:39
FatalError
Exception class which takes an HTML error message, and does not produce a backtrace.
Definition: FatalError.php:28
$wgLocaltimezone
$wgLocaltimezone
Fake out the timezone that the server thinks it's in.
Definition: DefaultSettings.php:3236
$wgEnotifImpersonal
$wgEnotifImpersonal
Definition: Setup.php:429
Wikimedia\Rdbms\LBFactory
An interface for generating database load balancers.
Definition: LBFactory.php:40
$wgSharedUploadDBprefix
string $wgSharedUploadDBprefix
Shortcut for the ForeignDBRepo 'tablePrefix' setting in $wgForeignFileRepos.
Definition: DefaultSettings.php:679
$wgCookieSecure
$wgCookieSecure
Whether the "secure" flag should be set on the cookie.
Definition: DefaultSettings.php:6071
$wgShellLocale
$wgShellLocale
Locale for LC_ALL, to provide a known environment for locale-sensitive operations.
Definition: DefaultSettings.php:8427
$cpPosInfo
$cpPosInfo
Definition: Setup.php:753
$wgLogNames
$wgLogNames
Lists the message key string for each log type.
Definition: DefaultSettings.php:7809
$wgFileCacheDirectory
$wgFileCacheDirectory
Directory where the cached page will be saved.
Definition: DefaultSettings.php:283
$wgUploadPath
$wgUploadPath
The URL path for the images directory.
Definition: DefaultSettings.php:272
wfWarn
wfWarn( $msg, $callerOffset=1, $level=E_USER_NOTICE)
Send a warning either to the debug log or in a PHP error depending on $wgDevelopmentWarnings.
Definition: GlobalFunctions.php:1065
NS_MEDIAWIKI
const NS_MEDIAWIKI
Definition: Defines.php:77
$wgGroupPermissions
$wgGroupPermissions['sysop']['replacetext']
Definition: ReplaceText.php:56
$wgDBuser
$wgDBuser
Database username.
Definition: DefaultSettings.php:1949
$wgDBerrorLogTZ
$wgDBerrorLogTZ
Timezone to use in the error log.
Definition: DefaultSettings.php:2174
$wgPasswordPolicy
$wgPasswordPolicy
Password policy for the wiki.
Definition: DefaultSettings.php:4500
$wgDebugDumpSql
$wgDebugDumpSql
Write SQL queries to the debug log.
Definition: DefaultSettings.php:6213
$wgRequest
if(! $wgDBerrorLogTZ) $wgRequest
Definition: Setup.php:751
Pingback\schedulePingback
static schedulePingback()
Schedule a deferred callable that will check if a pingback should be sent and (if so) proceed to send...
Definition: Pingback.php:272
$wgMinimalPasswordLength
$wgMinimalPasswordLength
Specifies the minimal length of a user password.
Definition: DefaultSettings.php:4710
$wgServerName
if( $wgServerName !==false) $wgServerName
Definition: Setup.php:663
NS_FILE_TALK
const NS_FILE_TALK
Definition: Defines.php:76
$wgOut
$wgOut
Definition: Setup.php:885
$wgPasswordSender
$wgPasswordSender
Sender email address for e-mail notifications.
Definition: DefaultSettings.php:1694
$wgPHPSessionHandling
string $wgPHPSessionHandling
Whether to use PHP session handling ($_SESSION and session_*() functions)
Definition: DefaultSettings.php:2568
$wgExtraLanguageCodes
$wgExtraLanguageCodes
List of mappings from one language code to another.
Definition: DefaultSettings.php:3031
$wgScriptPath
$wgScriptPath
The path we should point to.
Definition: DefaultSettings.php:158
DBO_DEFAULT
const DBO_DEFAULT
Definition: defines.php:13
Hooks\run
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition: Hooks.php:200
LanguageCode\getNonstandardLanguageCodeMapping
static getNonstandardLanguageCodeMapping()
Returns a mapping of non-standard language codes used by (current and previous version of) MediaWiki,...
Definition: LanguageCode.php:143
$wgContLang
$wgContLang
Definition: Setup.php:800
$wgForeignFileRepos
$wgForeignFileRepos
Enable the use of files from one or more other wikis.
Definition: DefaultSettings.php:575
$wgLocalStylePath
$wgLocalStylePath
The URL path of the skins directory.
Definition: DefaultSettings.php:236
$wgSecureLogin
$wgSecureLogin
This is to let user authenticate using https when they come from http.
Definition: DefaultSettings.php:4950
$wgExtraNamespaces
$wgExtraNamespaces
Additional namespaces.
Definition: DefaultSettings.php:3888
$wgInitialSessionId
$wgInitialSessionId
Definition: Setup.php:809
$wgNewUserLog
$wgNewUserLog
Maintain a log of newusers at Special:Log/newusers?
Definition: DefaultSettings.php:7971
$wgMainWANCache
$wgMainWANCache
Main Wide-Area-Network cache type.
Definition: DefaultSettings.php:2459
$GLOBALS
$GLOBALS['IP']
Definition: ComposerHookHandler.php:6
wfExpandUrl
wfExpandUrl( $url, $defaultProto=PROTO_CURRENT)
Expand a potentially local URL to a fully-qualified URL.
Definition: GlobalFunctions.php:491
$wgRightsUrl
$wgRightsUrl
Set this to specify an external URL containing details about the content license used on your wiki.
Definition: DefaultSettings.php:7210
$wgUsePathInfo
$wgUsePathInfo
Whether to support URLs like index.php/Page_title These often break when PHP is set up in CGI mode.
Definition: DefaultSettings.php:177
$wgSharedUploadPath
string $wgSharedUploadPath
Shortcut for the 'url' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:634