MediaWiki  1.33.0
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 // Start the autoloader, so that extensions can derive classes from core files
56 require_once "$IP/includes/AutoLoader.php";
57 
58 // Load up some global defines
59 require_once "$IP/includes/Defines.php";
60 
61 // Load default settings
62 require_once "$IP/includes/DefaultSettings.php";
63 
64 // Load global functions
65 require_once "$IP/includes/GlobalFunctions.php";
66 
67 // Load composer's autoloader if present
68 if ( is_readable( "$IP/vendor/autoload.php" ) ) {
69  require_once "$IP/vendor/autoload.php";
70 } elseif ( file_exists( "$IP/vendor/autoload.php" ) ) {
71  die( "$IP/vendor/autoload.php exists but is not readable" );
72 }
73 
74 // Assert that composer dependencies were successfully loaded
75 // Purposely no leading \ due to it breaking HHVM RepoAuthorative mode
76 // PHP works fine with both versions
77 // See https://github.com/facebook/hhvm/issues/5833
78 if ( !interface_exists( 'Psr\Log\LoggerInterface' ) ) {
79  $message = (
80  'MediaWiki requires the <a href="https://github.com/php-fig/log">PSR-3 logging ' .
81  "library</a> to be present. This library is not embedded directly in MediaWiki's " .
82  "git repository and must be installed separately by the end user.\n\n" .
83  'Please see <a href="https://www.mediawiki.org/wiki/Download_from_Git' .
84  '#Fetch_external_libraries">mediawiki.org</a> for help on installing ' .
85  'the required components.'
86  );
87  echo $message;
88  trigger_error( $message, E_USER_ERROR );
89  die( 1 );
90 }
91 
92 // Install a header callback
94 
99 if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
100  call_user_func( MW_CONFIG_CALLBACK );
101 } else {
102  if ( !defined( 'MW_CONFIG_FILE' ) ) {
103  define( 'MW_CONFIG_FILE', "$IP/LocalSettings.php" );
104  }
105  require_once MW_CONFIG_FILE;
106 }
107 
115 if ( defined( 'MW_SETUP_CALLBACK' ) ) {
116  call_user_func( MW_SETUP_CALLBACK );
117 }
118 
123 $fname = 'Setup.php';
124 $ps_setup = Profiler::instance()->scopedProfileIn( $fname );
125 
126 // Load queued extensions
127 ExtensionRegistry::getInstance()->loadFromQueue();
128 // Don't let any other extensions load
130 
131 mb_internal_encoding( 'UTF-8' );
132 
133 // Set the configured locale on all requests for consisteny
134 putenv( "LC_ALL=$wgShellLocale" );
135 setlocale( LC_ALL, $wgShellLocale );
136 
137 // Set various default paths sensibly...
138 $ps_default = Profiler::instance()->scopedProfileIn( $fname . '-defaults' );
139 
140 if ( $wgScript === false ) {
141  $wgScript = "$wgScriptPath/index.php";
142 }
143 if ( $wgLoadScript === false ) {
144  $wgLoadScript = "$wgScriptPath/load.php";
145 }
146 
147 if ( $wgArticlePath === false ) {
148  if ( $wgUsePathInfo ) {
149  $wgArticlePath = "$wgScript/$1";
150  } else {
151  $wgArticlePath = "$wgScript?title=$1";
152  }
153 }
154 
155 if ( !empty( $wgActionPaths ) && !isset( $wgActionPaths['view'] ) ) {
156  // 'view' is assumed the default action path everywhere in the code
157  // but is rarely filled in $wgActionPaths
158  $wgActionPaths['view'] = $wgArticlePath;
159 }
160 
161 if ( $wgResourceBasePath === null ) {
163 }
164 if ( $wgStylePath === false ) {
165  $wgStylePath = "$wgResourceBasePath/skins";
166 }
167 if ( $wgLocalStylePath === false ) {
168  // Avoid wgResourceBasePath here since that may point to a different domain (e.g. CDN)
169  $wgLocalStylePath = "$wgScriptPath/skins";
170 }
171 if ( $wgExtensionAssetsPath === false ) {
172  $wgExtensionAssetsPath = "$wgResourceBasePath/extensions";
173 }
174 
175 if ( $wgLogo === false ) {
176  $wgLogo = "$wgResourceBasePath/resources/assets/wiki.png";
177 }
178 
179 if ( $wgUploadPath === false ) {
180  $wgUploadPath = "$wgScriptPath/images";
181 }
182 if ( $wgUploadDirectory === false ) {
183  $wgUploadDirectory = "$IP/images";
184 }
185 if ( $wgReadOnlyFile === false ) {
186  $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR";
187 }
188 if ( $wgFileCacheDirectory === false ) {
189  $wgFileCacheDirectory = "{$wgUploadDirectory}/cache";
190 }
191 if ( $wgDeletedDirectory === false ) {
192  $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
193 }
194 
195 if ( $wgGitInfoCacheDirectory === false && $wgCacheDirectory !== false ) {
196  $wgGitInfoCacheDirectory = "{$wgCacheDirectory}/gitinfo";
197 }
198 
199 // Fix path to icon images after they were moved in 1.24
200 if ( $wgRightsIcon ) {
201  $wgRightsIcon = str_replace(
202  "{$wgStylePath}/common/images/",
203  "{$wgResourceBasePath}/resources/assets/licenses/",
205  );
206 }
207 
208 if ( isset( $wgFooterIcons['copyright']['copyright'] )
209  && $wgFooterIcons['copyright']['copyright'] === []
210 ) {
211  if ( $wgRightsIcon || $wgRightsText ) {
212  $wgFooterIcons['copyright']['copyright'] = [
213  'url' => $wgRightsUrl,
214  'src' => $wgRightsIcon,
215  'alt' => $wgRightsText,
216  ];
217  }
218 }
219 
220 if ( isset( $wgFooterIcons['poweredby'] )
221  && isset( $wgFooterIcons['poweredby']['mediawiki'] )
222  && $wgFooterIcons['poweredby']['mediawiki']['src'] === null
223 ) {
224  $wgFooterIcons['poweredby']['mediawiki']['src'] =
225  "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png";
226  $wgFooterIcons['poweredby']['mediawiki']['srcset'] =
227  "$wgResourceBasePath/resources/assets/poweredby_mediawiki_132x47.png 1.5x, " .
228  "$wgResourceBasePath/resources/assets/poweredby_mediawiki_176x62.png 2x";
229 }
230 
239 
247 
252  'name' => 'fsLockManager',
253  'class' => FSLockManager::class,
254  'lockDirectory' => "{$wgUploadDirectory}/lockdir",
255 ];
256 $wgLockManagers[] = [
257  'name' => 'nullLockManager',
258  'class' => NullLockManager::class,
259 ];
260 
266  'imagesPerRow' => 0,
267  'imageWidth' => 120,
268  'imageHeight' => 120,
269  'captionLength' => true,
270  'showBytes' => true,
271  'showDimensions' => true,
272  'mode' => 'traditional',
273 ];
274 
278 if ( !$wgLocalFileRepo ) {
279  $wgLocalFileRepo = [
280  'class' => LocalRepo::class,
281  'name' => 'local',
282  'directory' => $wgUploadDirectory,
283  'scriptDirUrl' => $wgScriptPath,
285  'hashLevels' => $wgHashedUploadDirectory ? 2 : 0,
286  'thumbScriptUrl' => $wgThumbnailScriptPath,
287  'transformVia404' => !$wgGenerateThumbnailOnParse,
288  'deletedDir' => $wgDeletedDirectory,
289  'deletedHashLevels' => $wgHashedUploadDirectory ? 3 : 0
290  ];
291 }
292 
293 if ( !isset( $wgLocalFileRepo['backend'] ) ) {
294  // Create a default FileBackend name.
295  // FileBackendGroup will register a default, if absent from $wgFileBackends.
296  $wgLocalFileRepo['backend'] = $wgLocalFileRepo['name'] . '-backend';
297 }
298 
302 if ( $wgUseSharedUploads ) {
303  if ( $wgSharedUploadDBname ) {
304  $wgForeignFileRepos[] = [
305  'class' => ForeignDBRepo::class,
306  'name' => 'shared',
307  'directory' => $wgSharedUploadDirectory,
308  'url' => $wgSharedUploadPath,
309  'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
310  'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
311  'transformVia404' => !$wgGenerateThumbnailOnParse,
312  'dbType' => $wgDBtype,
313  'dbServer' => $wgDBserver,
314  'dbUser' => $wgDBuser,
315  'dbPassword' => $wgDBpassword,
316  'dbName' => $wgSharedUploadDBname,
317  'dbFlags' => ( $wgDebugDumpSql ? DBO_DEBUG : 0 ) | DBO_DEFAULT,
318  'tablePrefix' => $wgSharedUploadDBprefix,
319  'hasSharedCache' => $wgCacheSharedUploads,
320  'descBaseUrl' => $wgRepositoryBaseUrl,
321  'fetchDescription' => $wgFetchCommonsDescriptions,
322  ];
323  } else {
324  $wgForeignFileRepos[] = [
325  'class' => FileRepo::class,
326  'name' => 'shared',
327  'directory' => $wgSharedUploadDirectory,
328  'url' => $wgSharedUploadPath,
329  'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0,
330  'thumbScriptUrl' => $wgSharedThumbnailScriptPath,
331  'transformVia404' => !$wgGenerateThumbnailOnParse,
332  'descBaseUrl' => $wgRepositoryBaseUrl,
333  'fetchDescription' => $wgFetchCommonsDescriptions,
334  ];
335  }
336 }
337 if ( $wgUseInstantCommons ) {
338  $wgForeignFileRepos[] = [
339  'class' => ForeignAPIRepo::class,
340  'name' => 'wikimediacommons',
341  'apibase' => 'https://commons.wikimedia.org/w/api.php',
342  'url' => 'https://upload.wikimedia.org/wikipedia/commons',
343  'thumbUrl' => 'https://upload.wikimedia.org/wikipedia/commons/thumb',
344  'hashLevels' => 2,
345  'transformVia404' => true,
346  'fetchDescription' => true,
347  'descriptionCacheExpiry' => 43200,
348  'apiThumbCacheExpiry' => 0,
349  ];
350 }
351 foreach ( $wgForeignFileRepos as &$repo ) {
352  if ( !isset( $repo['directory'] ) && $repo['class'] === ForeignAPIRepo::class ) {
353  $repo['directory'] = $wgUploadDirectory; // b/c
354  }
355  if ( !isset( $repo['backend'] ) ) {
356  $repo['backend'] = $repo['name'] . '-backend';
357  }
358 }
359 unset( $repo ); // no global pollution; destroy reference
360 
361 $rcMaxAgeDays = $wgRCMaxAge / ( 3600 * 24 );
362 if ( $wgRCFilterByAge ) {
363  // Trim down $wgRCLinkDays so that it only lists links which are valid
364  // as determined by $wgRCMaxAge.
365  // Note that we allow 1 link higher than the max for things like 56 days but a 60 day link.
366  sort( $wgRCLinkDays );
367 
368  foreach ( $wgRCLinkDays as $i => $days ) {
369  if ( $days >= $rcMaxAgeDays ) {
370  array_splice( $wgRCLinkDays, $i + 1 );
371  break;
372  }
373  }
374 }
375 // Ensure that default user options are not invalid, since that breaks Special:Preferences
376 $wgDefaultUserOptions['rcdays'] = min(
377  $wgDefaultUserOptions['rcdays'],
378  ceil( $rcMaxAgeDays )
379 );
380 $wgDefaultUserOptions['watchlistdays'] = min(
381  $wgDefaultUserOptions['watchlistdays'],
382  ceil( $rcMaxAgeDays )
383 );
384 unset( $rcMaxAgeDays );
385 
386 if ( $wgSkipSkin ) {
388 }
389 
390 $wgSkipSkins[] = 'fallback';
391 $wgSkipSkins[] = 'apioutput';
392 
393 if ( $wgLocalInterwiki ) {
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 if ( $wgMetaNamespace === false ) {
443  $wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
444 }
445 
446 // Default value is 2000 or the suhosin limit if it is between 1 and 2000
447 if ( $wgResourceLoaderMaxQueryLength === false ) {
448  $suhosinMaxValueLength = (int)ini_get( 'suhosin.get.max_value_length' );
449  if ( $suhosinMaxValueLength > 0 && $suhosinMaxValueLength < 2000 ) {
450  $wgResourceLoaderMaxQueryLength = $suhosinMaxValueLength;
451  } else {
453  }
454  unset( $suhosinMaxValueLength );
455 }
456 
457 // Ensure the minimum chunk size is less than PHP upload limits or the maximum
458 // upload size.
461  UploadBase::getMaxUploadSize( 'file' ),
462  UploadBase::getMaxPhpUploadSize(),
464  ini_get( 'post_max_size' ) ?: ini_get( 'hhvm.server.max_post_size' ),
465  PHP_INT_MAX
466  ) ?: PHP_INT_MAX ) - 1024 // Leave some room for other POST parameters
467 );
468 
474  NS_MEDIA => 'Media',
475  NS_SPECIAL => 'Special',
476  NS_TALK => 'Talk',
477  NS_USER => 'User',
478  NS_USER_TALK => 'User_talk',
479  NS_PROJECT => 'Project',
480  NS_PROJECT_TALK => 'Project_talk',
481  NS_FILE => 'File',
482  NS_FILE_TALK => 'File_talk',
483  NS_MEDIAWIKI => 'MediaWiki',
484  NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
485  NS_TEMPLATE => 'Template',
486  NS_TEMPLATE_TALK => 'Template_talk',
487  NS_HELP => 'Help',
488  NS_HELP_TALK => 'Help_talk',
489  NS_CATEGORY => 'Category',
490  NS_CATEGORY_TALK => 'Category_talk',
491 ];
492 
494 if ( is_array( $wgExtraNamespaces ) ) {
496 }
497 
498 // Hard-deprecate setting $wgDummyLanguageCodes in LocalSettings.php
499 if ( count( $wgDummyLanguageCodes ) !== 0 ) {
500  wfDeprecated( '$wgDummyLanguageCodes', '1.29' );
501 }
502 // Merge in the legacy language codes, incorporating overrides from the config
504  // Internal language codes of the private-use area which get mapped to
505  // themselves.
506  'qqq' => 'qqq', // Used for message documentation
507  'qqx' => 'qqx', // Used for viewing message keys
509 // Merge in (inverted) BCP 47 mappings
511  $bcp47 = strtolower( $bcp47 ); // force case-insensitivity
512  if ( !isset( $wgDummyLanguageCodes[$bcp47] ) ) {
514  }
515 }
516 
517 // These are now the same, always
518 // To determine the user language, use $wgLang->getCode()
520 
521 // Easy to forget to falsify $wgDebugToolbar for static caches.
522 // If file cache or CDN cache is on, just disable this (DWIMD).
523 if ( $wgUseFileCache || $wgUseSquid ) {
524  $wgDebugToolbar = false;
525 }
526 
527 // We always output HTML5 since 1.22, overriding these is no longer supported
528 // we set them here for extensions that depend on its value.
529 $wgHtml5 = true;
530 $wgXhtmlDefaultNamespace = 'http://www.w3.org/1999/xhtml';
531 $wgJsMimeType = 'text/javascript';
532 
533 // Blacklisted file extensions shouldn't appear on the "allowed" list
534 $wgFileExtensions = array_values( array_diff( $wgFileExtensions, $wgFileBlacklist ) );
535 
537  Wikimedia\suppressWarnings();
538  $wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', filemtime( "$IP/LocalSettings.php" ) ) );
539  Wikimedia\restoreWarnings();
540 }
541 
542 if ( $wgNewUserLog ) {
543  // Add new user log type
544  $wgLogTypes[] = 'newusers';
545  $wgLogNames['newusers'] = 'newuserlogpage';
546  $wgLogHeaders['newusers'] = 'newuserlogpagetext';
547  $wgLogActionsHandlers['newusers/newusers'] = NewUsersLogFormatter::class;
551  $wgLogActionsHandlers['newusers/autocreate'] = NewUsersLogFormatter::class;
552 }
553 
554 if ( $wgPageCreationLog ) {
555  // Add page creation log type
556  $wgLogTypes[] = 'create';
557  $wgLogActionsHandlers['create/create'] = LogFormatter::class;
558 }
559 
560 if ( $wgPageLanguageUseDB ) {
561  $wgLogTypes[] = 'pagelang';
562  $wgLogActionsHandlers['pagelang/pagelang'] = PageLangLogFormatter::class;
563 }
564 
565 if ( $wgCookieSecure === 'detect' ) {
566  $wgCookieSecure = ( WebRequest::detectProtocol() === 'https' );
567 }
568 
569 if ( $wgProfileOnly ) {
570  $wgDebugLogGroups['profileoutput'] = $wgDebugLogFile;
571  $wgDebugLogFile = '';
572 }
573 
574 // Backwards compatibility with old password limits
575 if ( $wgMinimalPasswordLength !== false ) {
576  $wgPasswordPolicy['policies']['default']['MinimalPasswordLength'] = $wgMinimalPasswordLength;
577 }
578 
579 if ( $wgMaximalPasswordLength !== false ) {
580  $wgPasswordPolicy['policies']['default']['MaximalPasswordLength'] = $wgMaximalPasswordLength;
581 }
582 
583 if ( $wgPHPSessionHandling !== 'enable' &&
584  $wgPHPSessionHandling !== 'warn' &&
585  $wgPHPSessionHandling !== 'disable'
586 ) {
587  $wgPHPSessionHandling = 'warn';
588 }
589 if ( defined( 'MW_NO_SESSION' ) ) {
590  // If the entry point wants no session, force 'disable' here unless they
591  // specifically set it to the (undocumented) 'warn'.
592  $wgPHPSessionHandling = MW_NO_SESSION === 'warn' ? 'warn' : 'disable';
593 }
594 
595 Profiler::instance()->scopedProfileOut( $ps_default );
596 
597 // Disable MWDebug for command line mode, this prevents MWDebug from eating up
598 // all the memory from logging SQL queries on maintenance scripts
601  MWDebug::init();
602 }
603 
604 // Reset the global service locator, so any services that have already been created will be
605 // re-created while taking into account any custom settings and extensions.
606 MediaWikiServices::resetGlobalInstance( new GlobalVarConfig(), 'quick' );
607 
608 if ( $wgSharedDB && $wgSharedTables ) {
609  // Apply $wgSharedDB table aliases for the local LB (all non-foreign DB connections)
610  MediaWikiServices::getInstance()->getDBLoadBalancer()->setTableAliases(
611  array_fill_keys(
613  [
614  'dbname' => $wgSharedDB,
615  'schema' => $wgSharedSchema,
616  'prefix' => $wgSharedPrefix
617  ]
618  )
619  );
620 }
621 
622 // Define a constant that indicates that the bootstrapping of the service locator
623 // is complete.
624 define( 'MW_SERVICE_BOOTSTRAP_COMPLETE', 1 );
625 
627 
628 // T48998: Bail out early if $wgArticlePath is non-absolute
629 foreach ( [ 'wgArticlePath', 'wgVariantArticlePath' ] as $varName ) {
630  if ( $$varName && !preg_match( '/^(https?:\/\/|\/)/', $$varName ) ) {
631  throw new FatalError(
632  "If you use a relative URL for \$$varName, it must start " .
633  'with a slash (<code>/</code>).<br><br>See ' .
634  "<a href=\"https://www.mediawiki.org/wiki/Manual:\$$varName\">" .
635  "https://www.mediawiki.org/wiki/Manual:\$$varName</a>."
636  );
637  }
638 }
639 
640 $ps_default2 = Profiler::instance()->scopedProfileIn( $fname . '-defaults2' );
641 
642 if ( $wgCanonicalServer === false ) {
644 }
645 
646 // Set server name
648 if ( $wgServerName !== false ) {
649  wfWarn( '$wgServerName should be derived from $wgCanonicalServer, '
650  . 'not customized. Overwriting $wgServerName.' );
651 }
653 unset( $serverParts );
654 
655 // Set defaults for configuration variables
656 // that are derived from the server name by default
657 // Note: $wgEmergencyContact and $wgPasswordSender may be false or empty string (T104142)
658 if ( !$wgEmergencyContact ) {
659  $wgEmergencyContact = 'wikiadmin@' . $wgServerName;
660 }
661 if ( !$wgPasswordSender ) {
662  $wgPasswordSender = 'apache@' . $wgServerName;
663 }
664 if ( !$wgNoReplyAddress ) {
666 }
667 
668 if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
669  $wgSecureLogin = false;
670  wfWarn( 'Secure login was enabled on a server that only supports '
671  . 'HTTP or HTTPS. Disabling secure login.' );
672 }
673 
675 
676 // Now that GlobalFunctions is loaded, set defaults that depend on it.
677 if ( $wgTmpDirectory === false ) {
679 }
680 
681 // We don't use counters anymore. Left here for extensions still
682 // expecting this to exist. Should be removed sometime 1.26 or later.
683 if ( !isset( $wgDisableCounters ) ) {
684  $wgDisableCounters = true;
685 }
686 
687 if ( $wgMainWANCache === false ) {
688  // Setup a WAN cache from $wgMainCacheType with no relayer.
689  // Sites using multiple datacenters can configure a relayer.
690  $wgMainWANCache = 'mediawiki-main-default';
692  'class' => WANObjectCache::class,
693  'cacheId' => $wgMainCacheType
694  ];
695 }
696 
697 Profiler::instance()->scopedProfileOut( $ps_default2 );
698 
699 $ps_misc = Profiler::instance()->scopedProfileIn( $fname . '-misc' );
700 
701 // Raise the memory limit if it's too low
702 wfMemoryLimit();
703 
709 if ( is_null( $wgLocaltimezone ) ) {
710  Wikimedia\suppressWarnings();
711  $wgLocaltimezone = date_default_timezone_get();
712  Wikimedia\restoreWarnings();
713 }
714 
715 date_default_timezone_set( $wgLocaltimezone );
716 if ( is_null( $wgLocalTZoffset ) ) {
717  $wgLocalTZoffset = date( 'Z' ) / 60;
718 }
719 // The part after the System| is ignored, but rest of MW fills it
720 // out as the local offset.
721 $wgDefaultUserOptions['timecorrection'] = "System|$wgLocalTZoffset";
722 
723 if ( !$wgDBerrorLogTZ ) {
725 }
726 
727 // Initialize the request object in $wgRequest
728 $wgRequest = RequestContext::getMain()->getRequest(); // BackCompat
729 // Set user IP/agent information for agent session consistency purposes
730 $cpPosInfo = LBFactory::getCPInfoFromCookieValue(
731  // The cookie has no prefix and is set by MediaWiki::preOutputCommit()
732  $wgRequest->getCookie( 'cpPosIndex', '' ),
733  // Mitigate broken client-side cookie expiration handling (T190082)
734  time() - ChronologyProtector::POSITION_COOKIE_TTL
735 );
736 MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->setRequestInfo( [
737  'IPAddress' => $wgRequest->getIP(),
738  'UserAgent' => $wgRequest->getHeader( 'User-Agent' ),
739  'ChronologyProtection' => $wgRequest->getHeader( 'ChronologyProtection' ),
740  'ChronologyPositionIndex' => $wgRequest->getInt( 'cpPosIndex', $cpPosInfo['index'] ),
741  'ChronologyClientId' => $cpPosInfo['clientId']
742 ] );
743 unset( $cpPosInfo );
744 // Make sure that object caching does not undermine the ChronologyProtector improvements
745 if ( $wgRequest->getCookie( 'UseDC', '' ) === 'master' ) {
746  // The user is pinned to the primary DC, meaning that they made recent changes which should
747  // be reflected in their subsequent web requests. Avoid the use of interim cache keys because
748  // they use a blind TTL and could be stale if an object changes twice in a short time span.
749  MediaWikiServices::getInstance()->getMainWANObjectCache()->useInterimHoldOffCaching( false );
750 }
751 
752 // Useful debug output
753 if ( $wgCommandLineMode ) {
754  wfDebug( "\n\nStart command line script $self\n" );
755 } else {
756  $debug = "\n\nStart request {$wgRequest->getMethod()} {$wgRequest->getRequestURL()}\n";
757 
758  if ( $wgDebugPrintHttpHeaders ) {
759  $debug .= "HTTP HEADERS:\n";
760 
761  foreach ( $wgRequest->getAllHeaders() as $name => $value ) {
762  $debug .= "$name: $value\n";
763  }
764  }
765  wfDebug( $debug );
766 }
767 
770 
771 wfDebugLog( 'caches',
772  'cluster: ' . get_class( $wgMemc ) .
773  ', WAN: ' . ( $wgMainWANCache === CACHE_NONE ? 'CACHE_NONE' : $wgMainWANCache ) .
774  ', stash: ' . $wgMainStash .
775  ', message: ' . get_class( $messageMemc ) .
776  ', session: ' . get_class( ObjectCache::getInstance( $wgSessionCacheType ) )
777 );
778 
779 Profiler::instance()->scopedProfileOut( $ps_misc );
780 
781 // Most of the config is out, some might want to run hooks here.
782 Hooks::run( 'SetupAfterCache' );
783 
784 $ps_globals = Profiler::instance()->scopedProfileIn( $fname . '-globals' );
785 
790 $wgContLang = MediaWikiServices::getInstance()->getContentLanguage();
791 
792 // Now that variant lists may be available...
793 $wgRequest->interpolateTitle();
794 
800 if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
801  // If session.auto_start is there, we can't touch session name
802  if ( $wgPHPSessionHandling !== 'disable' && !wfIniGetBool( 'session.auto_start' ) ) {
803  session_name( $wgSessionName ?: $wgCookiePrefix . '_session' );
804  }
805 
806  // Create the SessionManager singleton and set up our session handler,
807  // unless we're specifically asked not to.
808  if ( !defined( 'MW_NO_SESSION_HANDLER' ) ) {
810  MediaWiki\Session\SessionManager::singleton()
811  );
812  }
813 
814  // Initialize the session
815  try {
817  } catch ( OverflowException $ex ) {
818  if ( isset( $ex->sessionInfos ) && count( $ex->sessionInfos ) >= 2 ) {
819  // The exception is because the request had multiple possible
820  // sessions tied for top priority. Report this to the user.
821  $list = [];
822  foreach ( $ex->sessionInfos as $info ) {
823  $list[] = $info->getProvider()->describe( $wgContLang );
824  }
825  $list = $wgContLang->listToText( $list );
826  throw new HttpError( 400,
827  Message::newFromKey( 'sessionmanager-tie', $list )->inLanguage( $wgContLang )->plain()
828  );
829  }
830 
831  // Not the one we want, rethrow
832  throw $ex;
833  }
834 
835  if ( $session->isPersistent() ) {
836  $wgInitialSessionId = $session->getSessionId();
837  }
838 
839  $session->renew();
840  if ( MediaWiki\Session\PHPSessionHandler::isEnabled() &&
841  ( $session->isPersistent() || $session->shouldRememberUser() ) &&
842  session_id() !== $session->getId()
843  ) {
844  // Start the PHP-session for backwards compatibility
845  if ( session_id() !== '' ) {
846  wfDebugLog( 'session', 'PHP session {old_id} was already started, changing to {new_id}', 'all', [
847  'old_id' => session_id(),
848  'new_id' => $session->getId(),
849  ] );
850  session_write_close();
851  }
852  session_id( $session->getId() );
853  session_start();
854  }
855 
856  unset( $session );
857 } else {
858  // Even if we didn't set up a global Session, still install our session
859  // handler unless specifically requested not to.
860  if ( !defined( 'MW_NO_SESSION_HANDLER' ) ) {
862  MediaWiki\Session\SessionManager::singleton()
863  );
864  }
865 }
866 
870 $wgUser = RequestContext::getMain()->getUser(); // BackCompat
871 
876 
880 $wgOut = RequestContext::getMain()->getOutput(); // BackCompat
881 
886 $wgParser = new StubObject( 'wgParser', function () {
887  return MediaWikiServices::getInstance()->getParser();
888 } );
889 
893 $wgTitle = null;
894 
895 Profiler::instance()->scopedProfileOut( $ps_globals );
896 $ps_extensions = Profiler::instance()->scopedProfileIn( $fname . '-extensions' );
897 
898 // Extension setup functions
899 // Entries should be added to this variable during the inclusion
900 // of the extension file. This allows the extension to perform
901 // any necessary initialisation in the fully initialised environment
902 foreach ( $wgExtensionFunctions as $func ) {
903  call_user_func( $func );
904 }
905 
906 // If the session user has a 0 id but a valid name, that means we need to
907 // autocreate it.
908 if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
909  $sessionUser = MediaWiki\Session\SessionManager::getGlobalSession()->getUser();
910  if ( $sessionUser->getId() === 0 && User::isValidUserName( $sessionUser->getName() ) ) {
911  $res = MediaWiki\Auth\AuthManager::singleton()->autoCreateUser(
912  $sessionUser,
913  MediaWiki\Auth\AuthManager::AUTOCREATE_SOURCE_SESSION,
914  true
915  );
916  \MediaWiki\Logger\LoggerFactory::getInstance( 'authevents' )->info( 'Autocreation attempt', [
917  'event' => 'autocreate',
918  'status' => $res,
919  ] );
920  unset( $res );
921  }
922  unset( $sessionUser );
923 }
924 
925 if ( !$wgCommandLineMode ) {
927 }
928 
930 
931 Profiler::instance()->scopedProfileOut( $ps_extensions );
932 Profiler::instance()->scopedProfileOut( $ps_setup );
$wgCanonicalNamespaceNames
$wgCanonicalNamespaceNames
Definitions of the NS_ constants are in Defines.php.
Definition: Setup.php:473
$wgSharedUploadDirectory
string $wgSharedUploadDirectory
Shortcut for the 'directory' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:591
$wgLocalInterwiki
$wgLocalInterwiki
The interwiki prefix of the current wiki, or false if it doesn't have one.
Definition: DefaultSettings.php:3911
LanguageCode\getDeprecatedCodeMapping
static getDeprecatedCodeMapping()
Returns a mapping of deprecated language codes that were used in previous versions of MediaWiki to up...
Definition: LanguageCode.php:128
MediaWiki\HeaderCallback\register
static register()
Register a callback to be called when headers are sent.
Definition: HeaderCallback.php:14
MediaWiki\Session\PHPSessionHandler\install
static install(SessionManager $manager)
Install a session handler for the current web request.
Definition: PHPSessionHandler.php:110
$wgUsersNotifiedOnAllChanges
$wgUsersNotifiedOnAllChanges
Definition: Setup.php:439
$wgMaximalPasswordLength
$wgMaximalPasswordLength
Specifies the maximal length of a user password (T64685).
Definition: DefaultSettings.php:4692
MW_NO_SESSION
const MW_NO_SESSION
Definition: load.php:29
$wgDBserver
$wgDBserver
Database host name or IP address.
Definition: DefaultSettings.php:1863
$wgFileBlacklist
$wgFileBlacklist
Files with these extensions will never be allowed as uploads.
Definition: DefaultSettings.php:939
$wgActionPaths
$wgActionPaths
Definition: img_auth.php:47
NS_HELP
const NS_HELP
Definition: Defines.php:76
$wgDBname
controlled by the following MediaWiki still creates a BagOStuff but calls it to it are no ops If the cache daemon can t be it should also disable itself fairly $wgDBname
Definition: memcached.txt:93
ObjectCache\getLocalClusterInstance
static getLocalClusterInstance()
Get the main cluster-local cache object.
Definition: ObjectCache.php:356
$wgRCLinkDays
$wgRCLinkDays
List of Days options to list in the Special:Recentchanges and Special:Recentchangeslinked pages.
Definition: DefaultSettings.php:6823
$wgResourceLoaderMaxQueryLength
$wgResourceLoaderMaxQueryLength
If set to a positive number, ResourceLoader will not generate URLs whose query string is more than th...
Definition: DefaultSettings.php:3754
$wgProfileOnly
$wgProfileOnly
Don't put non-profiling info into log file.
Definition: DefaultSettings.php:6415
$wgCookiePrefix
if( $wgLocalInterwiki) if( $wgSharedPrefix===false) if( $wgSharedSchema===false) if(! $wgCookiePrefix) $wgCookiePrefix
Definition: Setup.php:418
$wgMinUploadChunkSize
if( $wgMetaNamespace===false) if( $wgResourceLoaderMaxQueryLength===false) $wgMinUploadChunkSize
Definition: Setup.php:459
$wgPageCreationLog
$wgPageCreationLog
Maintain a log of page creations at Special:Log/create?
Definition: DefaultSettings.php:7905
$wgParser
$wgParser
Definition: Setup.php:886
$wgEnotifFromEditor
$wgEnotifFromEditor
Definition: Setup.php:428
$wgInvalidateCacheOnLocalSettingsChange
$wgInvalidateCacheOnLocalSettingsChange
Invalidate various caches when LocalSettings.php changes.
Definition: DefaultSettings.php:2670
$wgGalleryOptions
$wgGalleryOptions
Default parameters for the "<gallery>" tag.
Definition: Setup.php:265
$wgTmpDirectory
$wgTmpDirectory
The local filesystem path to a temporary directory.
Definition: DefaultSettings.php:339
$wgRightsText
$wgRightsText
If either $wgRightsUrl or $wgRightsPage is specified then this variable gives the text for the link.
Definition: DefaultSettings.php:7148
Profiler\instance
static instance()
Singleton.
Definition: Profiler.php:62
$wgEnotifWatchlist
$wgEnotifWatchlist
Definition: Setup.php:435
$wgSharedTables
$wgSharedTables
Definition: DefaultSettings.php:2008
$wgSharedSchema
$wgSharedSchema
Definition: DefaultSettings.php:2014
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:534
NS_TEMPLATE_TALK
const NS_TEMPLATE_TALK
Definition: Defines.php:75
$wgLogHeaders
$wgLogHeaders
Lists the message key string for descriptive text to be shown at the top of each log type.
Definition: DefaultSettings.php:7760
captcha-old.count
count
Definition: captcha-old.py:249
$wgDefaultUserOptions
if( $wgRCFilterByAge) $wgDefaultUserOptions['rcdays']
Definition: Setup.php:376
$wgUserEmailUseReplyTo
$wgUserEmailUseReplyTo
Definition: Setup.php:438
$wgScript
$wgScript
The URL path to index.php.
Definition: DefaultSettings.php:186
MediaWiki\Logger\LoggerFactory\getInstance
static getInstance( $channel)
Get a named logger instance from the currently configured logger factory.
Definition: LoggerFactory.php:92
CACHE_NONE
const CACHE_NONE
Definition: Defines.php:102
$ps_misc
$ps_misc
Definition: Setup.php:699
$wgDBtype
$wgDBtype
Database type.
Definition: DefaultSettings.php:1888
$wgSharedDB
$wgSharedDB
Shared database for multiple wikis.
Definition: DefaultSettings.php:1998
$wgLocalFileRepo
$wgLocalFileRepo
File repository structures.
Definition: DefaultSettings.php:526
$wgWANObjectCaches
$wgWANObjectCaches
Advanced WAN object cache configuration.
Definition: DefaultSettings.php:2445
$wgSharedUploadDBname
bool string $wgSharedUploadDBname
Shortcut for the ForeignDBRepo 'dbName' setting in $wgForeignFileRepos.
Definition: DefaultSettings.php:636
$wgHtml5
if( $wgUseFileCache|| $wgUseSquid) $wgHtml5
Definition: Setup.php:529
DBO_DEBUG
const DBO_DEBUG
Definition: defines.php:9
$wgDBmwschema
$wgDBmwschema
Mediawiki schema; this should be alphanumeric and not contain spaces nor hyphens.
Definition: DefaultSettings.php:1959
$wgVirtualRestConfig
if(! $wgEmergencyContact) if(! $wgPasswordSender) if(! $wgNoReplyAddress) if( $wgSecureLogin &&substr( $wgServer, 0, 2) !=='//') $wgVirtualRestConfig['global']['domain']
Definition: Setup.php:674
$wgGenerateThumbnailOnParse
$wgGenerateThumbnailOnParse
Allow thumbnail rendering on page view.
Definition: DefaultSettings.php:1313
$wgEnableUserEmail
$wgEnableUserEmail
Definition: Setup.php:427
NS_FILE
const NS_FILE
Definition: Defines.php:70
$wgExtensionAssetsPath
$wgExtensionAssetsPath
The URL path of the extensions directory.
Definition: DefaultSettings.php:216
NS_TEMPLATE
const NS_TEMPLATE
Definition: Defines.php:74
MWExceptionHandler\installHandler
static installHandler()
Install handlers with PHP.
Definition: MWExceptionHandler.php:76
WebRequest\detectProtocol
static detectProtocol()
Detect the protocol from $_SERVER.
Definition: WebRequest.php:246
$wgUseSquid
$wgUseSquid
Enable/disable CDN.
Definition: DefaultSettings.php:2708
$res
$res
Definition: database.txt:21
$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:2317
User\isValidUserName
static isValidUserName( $name)
Is the input a valid username?
Definition: User.php:993
$wgSharedThumbnailScriptPath
string $wgSharedThumbnailScriptPath
Shortcut for the 'thumbScriptUrl' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:907
$wgLogo
$wgLogo
The URL path of the wiki logo.
Definition: DefaultSettings.php:262
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:1043
$wgMetaNamespace
$wgMetaNamespace
Name of the project namespace.
Definition: DefaultSettings.php:3813
HttpError
Show an error that looks like an HTTP server error.
Definition: HttpError.php:30
$wgDBpassword
$wgDBpassword
Database user's password.
Definition: DefaultSettings.php:1883
$wgDBprefix
$wgDBprefix
Table name prefix.
Definition: DefaultSettings.php:1941
$wgFetchCommonsDescriptions
bool $wgFetchCommonsDescriptions
Shortcut for the 'fetchDescription' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:626
$wgStylePath
$wgStylePath
The URL path of the skins directory.
Definition: DefaultSettings.php:201
php
injection txt This is an overview of how MediaWiki makes use of dependency injection The design described here grew from the discussion of RFC T384 The term dependency this means that anything an object needs to operate should be injected from the the object itself should only know narrow no concrete implementation of the logic it relies on The requirement to inject everything typically results in an architecture that based on two main types of and essentially stateless service objects that use other service objects to operate on the value objects As of the beginning MediaWiki is only starting to use the DI approach Much of the code still relies on global state or direct resulting in a highly cyclical dependency which acts as the top level factory for services in MediaWiki which can be used to gain access to default instances of various services MediaWikiServices however also allows new services to be defined and default services to be redefined Services are defined or redefined by providing a callback the instantiator that will return a new instance of the service When it will create an instance of MediaWikiServices and populate it with the services defined in the files listed by thereby bootstrapping the DI framework Per $wgServiceWiringFiles lists includes ServiceWiring php
Definition: injection.txt:35
$wgMemc
$wgMemc
Definition: Setup.php:768
$ps_default2
foreach([ 'wgArticlePath', 'wgVariantArticlePath'] as $varName) $ps_default2
Definition: Setup.php:640
$debug
$debug
Definition: mcc.php:31
$wgRepositoryBaseUrl
$wgRepositoryBaseUrl
Shortcut for the 'descBaseUrl' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:617
$rcMaxAgeDays
$rcMaxAgeDays
Definition: Setup.php:361
$wgUseInstantCommons
$wgUseInstantCommons
Use Wikimedia Commons as a foreign file repository.
Definition: DefaultSettings.php:552
ExtensionRegistry\getInstance
static getInstance()
Definition: ExtensionRegistry.php:98
$wgHashedUploadDirectory
$wgHashedUploadDirectory
Set this to false if you do not want MediaWiki to divide your images directory into many subdirectori...
Definition: DefaultSettings.php:922
NS_SPECIAL
const NS_SPECIAL
Definition: Defines.php:53
wfParseUrl
wfParseUrl( $url)
parse_url() work-alike, but non-broken.
Definition: GlobalFunctions.php:817
$wgHashedSharedUploadDirectory
bool $wgHashedSharedUploadDirectory
Shortcut for the 'hashLevels' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:609
$wgNoReplyAddress
$wgNoReplyAddress
Reply-To address for e-mail notifications.
Definition: DefaultSettings.php:1665
$wgEnotifMaxRecips
$wgEnotifMaxRecips
Definition: Setup.php:430
NS_PROJECT
const NS_PROJECT
Definition: Defines.php:68
$wgEmergencyContact
$wgEmergencyContact
Site admin email address.
Definition: DefaultSettings.php:1648
wfDeprecated
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Throws a warning that $function is deprecated.
Definition: GlobalFunctions.php:1078
$wgFooterIcons
$wgFooterIcons
Abstract list of footer icons for skins in place of old copyrightico and poweredbyico code You can ad...
Definition: DefaultSettings.php:3468
$ps_default
$ps_default
Definition: Setup.php:138
$wgUseFileCache
$wgUseFileCache
This will cache static pages for non-logged-in users to reduce database traffic on public sites.
Definition: DefaultSettings.php:2621
$wgCommandLineMode
global $wgCommandLineMode
Definition: Setup.php:599
$wgNamespaceProtection
if( $wgScript===false) if( $wgLoadScript===false) if( $wgArticlePath===false) if(!empty( $wgActionPaths) &&!isset( $wgActionPaths['view'])) 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:238
NS_MEDIAWIKI_TALK
const NS_MEDIAWIKI_TALK
Definition: Defines.php:73
$wgDebugLogGroups
$wgDebugLogGroups
Map of string log group names to log destinations.
Definition: DefaultSettings.php:6222
$wgLang
$wgLang
Definition: Setup.php:875
$wgDummyLanguageCodes
if(is_array( $wgExtraNamespaces)) if(count( $wgDummyLanguageCodes) !==0) $wgDummyLanguageCodes
Definition: Setup.php:503
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:194
MediaWiki
A helper class for throttling authentication attempts.
$wgSharedPrefix
$wgSharedPrefix
Definition: DefaultSettings.php:2003
ObjectCache\getInstance
static getInstance( $id)
Get a cached instance of the specified type of cache object.
Definition: ObjectCache.php:92
use
as see the revision history and available at free of to any person obtaining a copy of this software and associated documentation to deal in the Software without including without limitation the rights to use
Definition: MIT-LICENSE.txt:10
$code
this hook is for auditing only or null if authentication failed before getting that far or null if we can t even determine that When $user is not it can be in the form of< username >< more info > e g for bot passwords intended to be added to log contexts Fields it might only if the login was with a bot password it is not rendered in wiki pages or galleries in category pages allow injecting custom HTML after the section Any uses of the hook need to handle escaping see BaseTemplate::getToolbox and BaseTemplate::makeListItem for details on the format of individual items inside of this array or by returning and letting standard HTTP rendering take place modifiable or by returning false and taking over the output modifiable & $code
Definition: hooks.txt:780
$wgLogTypes
$wgLogTypes
The logging system has two levels: an event type, which describes the general category and can be vie...
Definition: DefaultSettings.php:7676
$wgEnotifUseRealName
$wgEnotifUseRealName
Definition: Setup.php:433
$wgEnableEmail
$wgEnableEmail
Set to true to enable the e-mail basic features: Password reminders, etc.
Definition: DefaultSettings.php:1672
GlobalVarConfig
Accesses configuration settings from $GLOBALS.
Definition: GlobalVarConfig.php:28
$wgSessionName
$wgSessionName
Override to customise the session name.
Definition: DefaultSettings.php:6043
NS_CATEGORY
const NS_CATEGORY
Definition: Defines.php:78
wfMemoryLimit
wfMemoryLimit()
Set PHP's memory limit to the larger of php.ini or $wgMemoryLimit.
Definition: GlobalFunctions.php:2867
$wgDebugLogFile
$wgDebugLogFile
Filename for debug logging.
Definition: DefaultSettings.php:6093
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:949
$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:3320
$wgEnotifRevealEditorAddress
$wgEnotifRevealEditorAddress
Definition: Setup.php:432
$wgLockManagers
$wgLockManagers[]
Initialise $wgLockManagers to include basic FS version.
Definition: Setup.php:251
$wgUseSharedUploads
bool $wgUseSharedUploads
Shortcut for adding an entry to $wgForeignFileRepos.
Definition: DefaultSettings.php:582
$wgFullyInitialised
foreach( $wgExtensionFunctions as $func) if(!defined( 'MW_NO_SESSION') &&! $wgCommandLineMode) if(! $wgCommandLineMode) $wgFullyInitialised
Definition: Setup.php:929
$fname
if(defined( 'MW_SETUP_CALLBACK')) $fname
Customization point after all loading (constants, functions, classes, DefaultSettings,...
Definition: Setup.php:123
$wgPageLanguageUseDB
bool $wgPageLanguageUseDB
Enable page language feature Allows setting page language in database.
Definition: DefaultSettings.php:8682
$name
Allows to change the fields on the form that will be generated $name
Definition: hooks.txt:271
$wgEnotifMinorEdits
$wgEnotifMinorEdits
Definition: Setup.php:431
MediaWiki\Session\SessionManager\getGlobalSession
static getGlobalSession()
Get the "global" session.
Definition: SessionManager.php:107
$wgTitle
$wgTitle
Definition: Setup.php:893
NS_USER_TALK
const NS_USER_TALK
Definition: Defines.php:67
$wgDebugPrintHttpHeaders
$wgDebugPrintHttpHeaders
Print HTTP headers for every request in the debug information.
Definition: DefaultSettings.php:6265
$messageMemc
$messageMemc
Definition: Setup.php:769
$value
$value
Definition: styleTest.css.php:49
$wgLocalTZoffset
$wgLocalTZoffset
Set an offset from UTC in minutes to use for the default timezone setting for anonymous users and new...
Definition: DefaultSettings.php:3195
NS_MEDIA
const NS_MEDIA
Definition: Defines.php:52
$wgNamespaceAliases
$wgNamespaceAliases['Image']
The canonical names of namespaces 6 and 7 are, as of v1.14, "File" and "File_talk".
Definition: Setup.php:245
$wgLocalInterwikis
$wgLocalInterwikis
Array for multiple $wgLocalInterwiki values, in case there are several interwiki prefixes that point ...
Definition: DefaultSettings.php:3921
$wgDeletedDirectory
$wgDeletedDirectory
What directory to place deleted uploads in.
Definition: DefaultSettings.php:424
$wgCacheSharedUploads
bool $wgCacheSharedUploads
Shortcut for the ForeignDBRepo 'hasSharedCache' setting in $wgForeignFileRepos.
Definition: DefaultSettings.php:654
StubUserLang
Stub object for the user language.
Definition: StubObject.php:178
$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:6787
$wgLanguageCode
$wgLanguageCode
Site language code.
Definition: DefaultSettings.php:2912
$wgSitename
$wgSitename
Name of the site.
Definition: DefaultSettings.php:80
$wgRightsIcon
$wgRightsIcon
Override for copyright metadata.
Definition: DefaultSettings.php:7153
PROTO_HTTP
const PROTO_HTTP
Definition: Defines.php:219
$wgJsMimeType
$wgJsMimeType
Definition: Setup.php:531
NS_PROJECT_TALK
const NS_PROJECT_TALK
Definition: Defines.php:69
MWDebug\init
static init()
Enabled the debugger and load resource module.
Definition: MWDebug.php:76
$wgExtensionFunctions
$wgExtensionFunctions
A list of callback functions which are called once MediaWiki is fully initialised.
Definition: DefaultSettings.php:7276
$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:346
$wgUploadDirectory
$wgUploadDirectory
The filesystem path of the images directory.
Definition: DefaultSettings.php:250
$wgAllowHTMLEmail
$wgAllowHTMLEmail
For parts of the system that have been updated to provide HTML email content, send both text and HTML...
Definition: DefaultSettings.php:1754
RequestContext\getMain
static getMain()
Get the RequestContext object associated with the main request.
Definition: RequestContext.php:430
$wgLogActionsHandlers
$wgLogActionsHandlers
The same as above, but here values are names of classes, not messages.
Definition: DefaultSettings.php:7788
wfIniGetBool
wfIniGetBool( $setting)
Safety wrapper around ini_get() for boolean settings.
Definition: GlobalFunctions.php:2104
plain
either a plain
Definition: hooks.txt:2046
$wgResourceBasePath
$wgResourceBasePath
The default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
Definition: DefaultSettings.php:3671
$serverParts
if( $wgCanonicalServer===false) $serverParts
Definition: Setup.php:647
$wgUseEnotif
$wgUseEnotif
Definition: Setup.php:437
$wgSessionCacheType
$wgSessionCacheType
The cache type for storing session data.
Definition: DefaultSettings.php:2359
$wgArticlePath
$wgArticlePath
Definition: img_auth.php:46
$ps_setup
$ps_setup
Definition: Setup.php:124
wfGetMessageCacheStorage
wfGetMessageCacheStorage()
Get the cache object used by the message cache.
Definition: GlobalFunctions.php:2981
$wgCacheEpoch
$wgCacheEpoch
Set this to current time to invalidate all prior cached pages.
Definition: DefaultSettings.php:2608
wfShorthandToInteger
wfShorthandToInteger( $string='', $default=-1)
Converts shorthand byte notation to integer form.
Definition: GlobalFunctions.php:2916
$wgGitInfoCacheDirectory
$wgGitInfoCacheDirectory
Directory where GitInfo will look for pre-computed cache files.
Definition: DefaultSettings.php:2614
$wgXhtmlDefaultNamespace
$wgXhtmlDefaultNamespace
Definition: Setup.php:530
wfTempDir
wfTempDir()
Tries to get the system directory for temporary files.
Definition: GlobalFunctions.php:1989
$wgMainCacheType
CACHE_MEMCACHED $wgMainCacheType
Definition: memcached.txt:63
$wgReadOnlyFile
$wgReadOnlyFile
If this lock file exists (size > 0), the wiki will be forced into read-only mode.
Definition: DefaultSettings.php:6737
$wgSkipSkins
if( $wgSkipSkin) $wgSkipSkins[]
Definition: Setup.php:390
NS_HELP_TALK
const NS_HELP_TALK
Definition: Defines.php:77
MediaWiki\Auth\AuthManager\singleton
static singleton()
Get the global AuthManager.
Definition: AuthManager.php:151
$wgThumbnailScriptPath
$wgThumbnailScriptPath
Give a path here to use thumb.php for thumbnail generation on client request, instead of generating t...
Definition: DefaultSettings.php:898
$wgContLanguageCode
foreach(LanguageCode::getNonstandardLanguageCodeMapping() as $code=> $bcp47) $wgContLanguageCode
Definition: Setup.php:519
Wikimedia\Rdbms\ChronologyProtector
Class for ensuring a consistent ordering of events as seen by the user, despite replication.
Definition: ChronologyProtector.php:36
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:3184
$wgEnotifImpersonal
$wgEnotifImpersonal
Definition: Setup.php:429
Wikimedia\Rdbms\LBFactory
An interface for generating database load balancers.
Definition: LBFactory.php:39
as
This document is intended to provide useful advice for parties seeking to redistribute MediaWiki to end users It s targeted particularly at maintainers for Linux since it s been observed that distribution packages of MediaWiki often break We ve consistently had to recommend that users seeking support use official tarballs instead of their distribution s and this often solves whatever problem the user is having It would be nice if this could such as
Definition: distributors.txt:9
$wgSharedUploadDBprefix
string $wgSharedUploadDBprefix
Shortcut for the ForeignDBRepo 'tablePrefix' setting in $wgForeignFileRepos.
Definition: DefaultSettings.php:645
$wgCookieSecure
$wgCookieSecure
Whether the "secure" flag should be set on the cookie.
Definition: DefaultSettings.php:6011
$ps_globals
$ps_globals
Definition: Setup.php:784
$wgShellLocale
$wgShellLocale
Locale for LC_ALL, to provide a known environment for locale-sensitive operations.
Definition: DefaultSettings.php:8347
$cpPosInfo
$cpPosInfo
Definition: Setup.php:730
NS_USER
const NS_USER
Definition: Defines.php:66
$ps_extensions
$ps_extensions
Definition: Setup.php:896
NS_TALK
const NS_TALK
Definition: Defines.php:65
$wgLogNames
$wgLogNames
Lists the message key string for each log type.
Definition: DefaultSettings.php:7737
$wgFileCacheDirectory
$wgFileCacheDirectory
Directory where the cached page will be saved.
Definition: DefaultSettings.php:256
$wgUploadPath
$wgUploadPath
The URL path for the images directory.
Definition: DefaultSettings.php:245
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:1092
NS_MEDIAWIKI
const NS_MEDIAWIKI
Definition: Defines.php:72
$wgGroupPermissions
$wgGroupPermissions['sysop']['replacetext']
Definition: ReplaceText.php:56
class
you have access to all of the normal MediaWiki so you can get a DB use the etc For full docs on the Maintenance class
Definition: maintenance.txt:52
$wgDBuser
$wgDBuser
Database username.
Definition: DefaultSettings.php:1878
$wgDBerrorLogTZ
$wgDBerrorLogTZ
Timezone to use in the error log.
Definition: DefaultSettings.php:2116
$wgPasswordPolicy
$wgPasswordPolicy
Password policy for the wiki.
Definition: DefaultSettings.php:4460
$wgDebugDumpSql
$wgDebugDumpSql
Write SQL queries to the debug log.
Definition: DefaultSettings.php:6132
$wgRequest
if(! $wgDBerrorLogTZ) $wgRequest
Definition: Setup.php:728
MediaWikiServices
injection txt This is an overview of how MediaWiki makes use of dependency injection The design described here grew from the discussion of RFC T384 The term dependency this means that anything an object needs to operate should be injected from the the object itself should only know narrow no concrete implementation of the logic it relies on The requirement to inject everything typically results in an architecture that based on two main types of and essentially stateless service objects that use other service objects to operate on the value objects As of the beginning MediaWiki is only starting to use the DI approach Much of the code still relies on global state or direct resulting in a highly cyclical dependency MediaWikiServices
Definition: injection.txt:23
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:271
$wgMinimalPasswordLength
$wgMinimalPasswordLength
Specifies the minimal length of a user password.
Definition: DefaultSettings.php:4679
$wgRCFilterByAge
$wgRCFilterByAge
Filter $wgRCLinkDays by $wgRCMaxAge to avoid showing links for numbers higher than what will be store...
Definition: DefaultSettings.php:6811
$wgServerName
if( $wgServerName !==false) $wgServerName
Definition: Setup.php:652
$wgDebugToolbar
$wgDebugToolbar
Display the new debugging toolbar.
Definition: DefaultSettings.php:6496
NS_FILE_TALK
const NS_FILE_TALK
Definition: Defines.php:71
$wgOut
$wgOut
Definition: Setup.php:880
NS_CATEGORY_TALK
const NS_CATEGORY_TALK
Definition: Defines.php:79
$wgPasswordSender
$wgPasswordSender
Sender email address for e-mail notifications.
Definition: DefaultSettings.php:1658
$wgPHPSessionHandling
string $wgPHPSessionHandling
Whether to use PHP session handling ($_SESSION and session_*() functions)
Definition: DefaultSettings.php:2514
$wgExtraLanguageCodes
$wgExtraLanguageCodes
List of mappings from one language code to another.
Definition: DefaultSettings.php:2974
$wgScriptPath
$wgScriptPath
The path we should point to.
Definition: DefaultSettings.php:138
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:144
$wgContLang
$wgContLang
Definition: Setup.php:790
$wgForeignFileRepos
$wgForeignFileRepos
Enable the use of files from one or more other wikis.
Definition: DefaultSettings.php:541
$wgLocalStylePath
$wgLocalStylePath
The URL path of the skins directory.
Definition: DefaultSettings.php:209
$wgSecureLogin
$wgSecureLogin
This is to let user authenticate using https when they come from http.
Definition: DefaultSettings.php:4919
$wgMainStash
$wgMainStash
Main object stash type.
Definition: DefaultSettings.php:2485
$wgExtraNamespaces
$wgExtraNamespaces
Additional namespaces.
Definition: DefaultSettings.php:3850
$wgInitialSessionId
$wgInitialSessionId
Definition: Setup.php:799
$wgNewUserLog
$wgNewUserLog
Maintain a log of newusers at Special:Log/newusers?
Definition: DefaultSettings.php:7899
$wgMainWANCache
$wgMainWANCache
Main Wide-Area-Network cache type.
Definition: DefaultSettings.php:2429
$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:515
$wgRightsUrl
$wgRightsUrl
Set this to specify an external URL containing details about the content license used on your wiki.
Definition: DefaultSettings.php:7140
$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:157
$wgSharedUploadPath
string $wgSharedUploadPath
Shortcut for the 'url' setting of $wgForeignFileRepos.
Definition: DefaultSettings.php:600