32if ( !defined(
'MEDIAWIKI' ) ) {
42if ( file_exists(
"$IP/StartProfiler.php" ) ) {
43 require
"$IP/StartProfiler.php";
47require_once
"$IP/includes/AutoLoader.php";
50require_once
"$IP/includes/Defines.php";
53require_once
"$IP/includes/DefaultSettings.php";
56require_once
"$IP/includes/GlobalFunctions.php";
59if ( is_readable(
"$IP/vendor/autoload.php" ) ) {
60 require_once
"$IP/vendor/autoload.php";
67if ( !interface_exists(
'Psr\Log\LoggerInterface' ) ) {
69 'MediaWiki requires the <a href="https://github.com/php-fig/log">PSR-3 logging ' .
70 "library</a> to be present. This library is not embedded directly in MediaWiki's " .
71 "git repository and must be installed separately by the end user.\n\n" .
72 'Please see <a href="https://www.mediawiki.org/wiki/Download_from_Git' .
73 '#Fetch_external_libraries">mediawiki.org</a> for help on installing ' .
74 'the required components.'
77 trigger_error( $message, E_USER_ERROR );
82MediaWiki\HeaderCallback::register();
88if ( defined(
'MW_CONFIG_CALLBACK' ) ) {
91 if ( !defined(
'MW_CONFIG_FILE' ) ) {
92 define(
'MW_CONFIG_FILE',
"$IP/LocalSettings.php" );
94 require_once MW_CONFIG_FILE;
104if ( defined(
'MW_SETUP_CALLBACK' ) ) {
105 call_user_func( MW_SETUP_CALLBACK );
122 echo
"Error, Setup.php must be included from the file scope, after DefaultSettings.php\n";
126mb_internal_encoding(
'UTF-8' );
129putenv(
"LC_ALL=$wgShellLocale" );
171 $wgLogo =
"$wgResourceBasePath/resources/assets/wiki.png";
201 "{$wgStylePath}/common/images/",
202 "{$wgResourceBasePath}/resources/assets/licenses/",
224 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png";
226 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_132x47.png 1.5x, " .
227 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_176x62.png 2x";
251 'name' =>
'fsLockManager',
252 'class' => FSLockManager::class,
253 'lockDirectory' =>
"{$wgUploadDirectory}/lockdir",
256 'name' =>
'nullLockManager',
257 'class' => NullLockManager::class,
267 'imageHeight' => 120,
268 'captionLength' =>
true,
270 'showDimensions' =>
true,
271 'mode' =>
'traditional',
279 'class' => LocalRepo::class,
297 'class' => ForeignDBRepo::class,
317 'class' => FileRepo::class,
331 'class' => ForeignAPIRepo::class,
332 'name' =>
'wikimediacommons',
333 'apibase' =>
'https://commons.wikimedia.org/w/api.php',
334 'url' =>
'https://upload.wikimedia.org/wikipedia/commons',
335 'thumbUrl' =>
'https://upload.wikimedia.org/wikipedia/commons/thumb',
337 'transformVia404' =>
true,
338 'fetchDescription' =>
true,
339 'descriptionCacheExpiry' => 43200,
340 'apiThumbCacheExpiry' => 0,
351 if ( !isset( $repo[
'directory'] ) && $repo[
'class'] === ForeignAPIRepo::class ) {
354 if ( !isset( $repo[
'backend'] ) ) {
355 $repo[
'backend'] = $repo[
'name'] .
'-backend';
454 $suhosinMaxValueLength = (int)ini_get(
'suhosin.get.max_value_length' );
455 if ( $suhosinMaxValueLength > 0 && $suhosinMaxValueLength < 2000 ) {
460 unset( $suhosinMaxValueLength );
470 ini_get(
'post_max_size' ) ?: ini_get(
'hhvm.server.max_post_size' ),
472 ) ?: PHP_INT_MAX ) - 1024
489 NS_MEDIAWIKI =>
'MediaWiki',
530 Wikimedia\suppressWarnings();
532 Wikimedia\restoreWarnings();
572 wfDeprecated(
'$wgSessionsInObjectCache = false',
'1.27' );
579 "Session data will be stored in \"$cacheType\" cache with " .
580 "expiry $wgObjectCacheSessionExpiry seconds"
591if ( defined(
'MW_NO_SESSION' ) ) {
608MediaWikiServices::resetGlobalInstance(
new GlobalVarConfig(),
'quick' );
612 MediaWikiServices::getInstance()->getDBLoadBalancer()->setTableAliases(
626define(
'MW_SERVICE_BOOTSTRAP_COMPLETE', 1 );
628MWExceptionHandler::installHandler();
630require_once
"$IP/includes/compat/normal/UtfNormalUtil.php";
635foreach ( [
'wgArticlePath',
'wgVariantArticlePath' ] as $varName ) {
636 if ( $$varName && !preg_match(
'/^(https?:\/\/|\/)/', $$varName ) ) {
638 "If you use a relative URL for \$$varName, it must start " .
639 'with a slash (<code>/</code>).<br><br>See ' .
640 "<a href=\"https://www.mediawiki.org/wiki/Manual:\$$varName\">" .
641 "https://www.mediawiki.org/wiki/Manual:\$$varName</a>."
657 wfWarn(
'$wgServerName should be derived from $wgCanonicalServer, '
658 .
'not customized. Overwriting $wgServerName.' );
678 wfWarn(
'Secure login was enabled on a server that only supports '
679 .
'HTTP or HTTPS. Disabling secure login.' );
691if ( !isset( $wgDisableCounters ) ) {
692 $wgDisableCounters =
true;
700 'class' => WANObjectCache::class,
702 'channels' => [
'purge' =>
'wancache-main-default-purge' ]
719 Wikimedia\suppressWarnings();
721 Wikimedia\restoreWarnings();
739MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->setRequestInfo( [
741 'UserAgent' =>
$wgRequest->getHeader(
'User-Agent' ),
742 'ChronologyProtection' =>
$wgRequest->getHeader(
'ChronologyProtection' ),
744 'ChronologyPositionIndex' =>
748if (
$wgRequest->getCookie(
'UseDC',
'' ) ===
'master' ) {
752 MediaWikiServices::getInstance()->getMainWANObjectCache()->useInterimHoldOffCaching(
false );
757 wfDebug(
"\n\nStart command line script $self\n" );
759 $debug =
"\n\nStart request {$wgRequest->getMethod()} {$wgRequest->getRequestURL()}\n";
762 $debug .=
"HTTP HEADERS:\n";
765 $debug .=
"$name: $value\n";
781 return MediaWikiServices::getInstance()->getParserCache()->getCacheStorage();
785 'cluster: ' . get_class(
$wgMemc ) .
810 Hooks::run(
'AuthPluginSetup', [ &
$wgAuth ] );
813 MediaWiki\Auth\AuthManager::singleton()->forcePrimaryAuthenticationProviders( [
814 new MediaWiki\Auth\TemporaryPasswordPrimaryAuthenticationProvider( [
815 'authoritative' =>
false,
818 new MediaWiki\Auth\LocalPasswordPrimaryAuthenticationProvider( [
819 'authoritative' =>
true,
821 ],
'$wgAuth is ' . get_class(
$wgAuth ) );
839 if ( !defined(
'MW_NO_SESSION_HANDLER' ) ) {
840 MediaWiki\Session\PHPSessionHandler::install(
841 MediaWiki\Session\SessionManager::singleton()
847 $session = MediaWiki\Session\SessionManager::getGlobalSession();
848 }
catch ( OverflowException $ex ) {
849 if ( isset( $ex->sessionInfos ) && count( $ex->sessionInfos ) >= 2 ) {
853 foreach ( $ex->sessionInfos as $info ) {
854 $list[] = $info->getProvider()->describe(
$wgContLang );
858 Message::newFromKey(
'sessionmanager-tie', $list )->inLanguage(
$wgContLang )->
plain()
866 if ( $session->isPersistent() ) {
871 if (
MediaWiki\Session\PHPSessionHandler::isEnabled() &&
872 ( $session->isPersistent() || $session->shouldRememberUser() ) &&
873 session_id() !== $session->getId()
876 if ( session_id() !==
'' ) {
877 wfDebugLog(
'session',
'PHP session {old_id} was already started, changing to {new_id}',
'all', [
878 'old_id' => session_id(),
879 'new_id' => $session->getId(),
881 session_write_close();
883 session_id( $session->getId() );
891 if ( !defined(
'MW_NO_SESSION_HANDLER' ) ) {
892 MediaWiki\Session\PHPSessionHandler::install(
893 MediaWiki\Session\SessionManager::singleton()
918 return MediaWikiServices::getInstance()->getParser();
926Profiler::instance()->scopedProfileOut(
$ps_globals );
935 if ( is_object( $func ) && $func instanceof Closure ) {
936 $profName =
$fname .
'-extensions-closure';
937 } elseif ( is_array( $func ) ) {
938 if ( is_object( $func[0] ) ) {
939 $profName =
$fname .
'-extensions-' . get_class( $func[0] ) .
'::' . $func[1];
941 $profName =
$fname .
'-extensions-' . implode(
'::', $func );
944 $profName =
$fname .
'-extensions-' . strval( $func );
947 $ps_ext_func = Profiler::instance()->scopedProfileIn( $profName );
948 call_user_func( $func );
949 Profiler::instance()->scopedProfileOut( $ps_ext_func );
955 $sessionUser = MediaWiki\Session\SessionManager::getGlobalSession()->getUser();
958 $res = MediaWiki\Auth\AuthManager::singleton()->autoCreateUser(
960 MediaWiki\Auth\AuthManager::AUTOCREATE_SOURCE_SESSION,
964 \MediaWiki\Logger\LoggerFactory::getInstance(
'authevents' )->info(
'Autocreation attempt', [
965 'event' =>
'autocreate',
970 unset( $sessionUser );
980Profiler::instance()->scopedProfileOut(
$ps_setup );
$wgRightsIcon
Override for copyright metadata.
$wgCacheEpoch
Set this to current time to invalidate all prior cached pages.
bool $wgPageLanguageUseDB
Enable page language feature Allows setting page language in database.
$wgUsePathInfo
Whether to support URLs like index.php/Page_title These often break when PHP is set up in CGI mode.
$wgLanguageCode
Site language code.
$wgParserCacheType
The cache type for storing article HTML.
$wgSharedThumbnailScriptPath
$wgEmergencyContact
Site admin email address.
$wgDBprefix
Table name prefix.
$wgDBuser
Database username.
string $wgPHPSessionHandling
Whether to use PHP session handling ($_SESSION and session_*() functions)
$wgScript
The URL path to index.php.
$wgUseInstantCommons
Use Commons as a remote file repository.
$wgCacheDirectory
Directory for caching data in the local filesystem.
$wgHashedSharedUploadDirectory
Set the following to false especially if you have a set of files that need to be accessible by all wi...
$wgGenerateThumbnailOnParse
Allow thumbnail rendering on page view.
$wgRightsUrl
Set this to specify an external URL containing details about the content license used on your wiki.
$wgSessionName
Override to customise the session name.
$wgLocalInterwiki
The interwiki prefix of the current wiki, or false if it doesn't have one.
$wgPasswordPolicy
Password policy for local wiki users.
$wgLogNames
Lists the message key string for each log type.
$wgSharedUploadPath
Full path on the web server where shared uploads can be found.
$wgHashedUploadDirectory
Set this to false if you do not want MediaWiki to divide your images directory into many subdirectori...
$wgInvalidateCacheOnLocalSettingsChange
Invalidate various caches when LocalSettings.php changes.
$wgLocalStylePath
The URL path of the skins directory.
$wgThumbnailScriptPath
Give a path here to use thumb.php for thumbnail generation on client request, instead of generating t...
$wgExtraNamespaces
Additional namespaces.
$wgTmpDirectory
The local filesystem path to a temporary directory.
$wgDBmwschema
Mediawiki schema.
$wgNoReplyAddress
Reply-To address for e-mail notifications.
$wgDBerrorLogTZ
Timezone to use in the error log.
$wgUploadDirectory
The filesystem path of the images directory.
$wgLogTypes
The logging system has two levels: an event type, which describes the general category and can be vie...
$wgMaximalPasswordLength
Specifies the maximal length of a user password (T64685).
$wgSitename
Name of the site.
$wgSharedUploadDirectory
Path on the file system where shared uploads can be found.
$wgReadOnlyFile
If this lock file exists (size > 0), the wiki will be forced into read-only mode.
$wgResourceLoaderMaxQueryLength
If set to a positive number, ResourceLoader will not generate URLs whose query string is more than th...
$wgFileCacheDirectory
Directory where the cached page will be saved.
$wgRightsText
If either $wgRightsUrl or $wgRightsPage is specified then this variable gives the text for the link.
$wgGitInfoCacheDirectory
Directory where GitInfo will look for pre-computed cache files.
$wgResourceBasePath
The default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
$wgProfileOnly
Don't put non-profiling info into log file.
$wgFooterIcons
Abstract list of footer icons for skins in place of old copyrightico and poweredbyico code You can ad...
$wgUploadPath
The URL path for the images directory.
$wgCacheSharedUploads
Cache shared metadata in memcached.
$wgEnableParserCache
Kept for extension compatibility; see $wgParserCacheType.
$wgFileBlacklist
Files with these extensions will never be allowed as uploads.
$wgEnableEmail
Set to true to enable the e-mail basic features: Password reminders, etc.
$wgExtensionFunctions
A list of callback functions which are called once MediaWiki is fully initialised.
$wgUseSquid
Enable/disable CDN.
$wgShellLocale
Locale for LC_ALL, to provide a known environment for locale-sensitive operations.
$wgSecureLogin
This is to let user authenticate using https when they come from http.
$wgRCMaxAge
Recentchanges items are periodically purged; entries older than this many seconds will go.
$wgLocaltimezone
Fake out the timezone that the server thinks it's in.
$wgUploadBaseUrl
If set, this URL is added to the start of $wgUploadPath to form a complete upload URL.
$wgLocalInterwikis
Array for multiple $wgLocalInterwiki values, in case there are several interwiki prefixes that point ...
$wgVersion
MediaWiki version number.
$wgExperimentalHtmlIds
Abandoned experiment with HTML5-style ID escaping.
$wgLocalFileRepo
File repository structures.
$wgDeletedDirectory
What directory to place deleted uploads in.
$wgScriptPath
The path we should point to.
$wgWANObjectCaches
Advanced WAN object cache configuration.
$wgAuth $wgAuth
Authentication plugin.
$wgAllowHTMLEmail
For parts of the system that have been updated to provide HTML email content, send both text and HTML...
$wgFragmentMode
How should section IDs be encoded? This array can contain 1 or 2 elements, each of them can be one of...
$wgSharedUploadDBname
DB name with metadata about shared directory.
$wgMainStash
Main object stash type.
$wgExtensionAssetsPath
The URL path of the extensions directory.
$wgDebugToolbar
Display the new debugging toolbar.
$wgRepositoryBaseUrl
Base URL for a repository wiki.
$wgLogHeaders
Lists the message key string for descriptive text to be shown at the top of each log type.
$wgDebugLogGroups
Map of string log group names to log destinations.
$wgSharedDB
Shared database for multiple wikis.
$wgSessionCacheType
The cache type for storing session data.
$wgSharedUploadDBprefix
Optional table prefix used in database.
$wgDebugDumpSql
Write SQL queries to the debug log.
$wgFetchCommonsDescriptions
Fetch commons image description pages and display them on the local wiki?
$wgDBserver
Database host name or IP address.
bool $wgForceHTTPS
If this is true, when an insecure HTTP request is received, always redirect to HTTPS.
$wgLoadScript
The URL path to load.php.
$wgCookieSecure
Whether the "secure" flag should be set on the cookie.
$wgExtraLanguageCodes
List of mappings from one language code to another.
$wgCanonicalServer
Canonical URL of the server, to use in IRC feeds and notification e-mails.
$wgStylePath
The URL path of the skins directory.
$wgServer
URL of the server.
$wgRCFilterByAge
Filter $wgRCLinkDays by $wgRCMaxAge to avoid showing links for numbers higher than what will be store...
$wgMinimalPasswordLength
Specifies the minimal length of a user password.
$wgMetaNamespace
Name of the project namespace.
$wgLogo
The URL path of the wiki logo.
$wgUseFileCache
This will cache static pages for non-logged-in users to reduce database traffic on public sites.
$wgDebugLogFile
Filename for debug logging.
$wgPasswordSender
Sender email address for e-mail notifications.
$wgLogActionsHandlers
The same as above, but here values are names of classes, not messages.
$wgLocalTZoffset
Set an offset from UTC in minutes to use for the default timezone setting for anonymous users and new...
$wgMainWANCache
Main Wide-Area-Network cache type.
$wgDebugPrintHttpHeaders
Print HTTP headers for every request in the debug information.
$wgUseSharedUploads
If you operate multiple wikis, you can define a shared upload path here.
$wgDBpassword
Database user's password.
$wgRCLinkDays
List of Days options to list in the Special:Recentchanges and Special:Recentchangeslinked pages.
$wgNewUserLog
Maintain a log of newusers at Log/newusers?
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
wfParseUrl( $url)
parse_url() work-alike, but non-broken.
wfTempDir()
Tries to get the system directory for temporary files.
wfWarn( $msg, $callerOffset=1, $level=E_USER_NOTICE)
Send a warning either to the debug log or in a PHP error depending on $wgDevelopmentWarnings.
wfIniGetBool( $setting)
Safety wrapper around ini_get() for boolean settings.
wfGetMessageCacheStorage()
Get the cache object used by the message cache.
wfExpandUrl( $url, $defaultProto=PROTO_CURRENT)
Expand a potentially local URL to a fully-qualified URL.
wfGetMainCache()
Get the main cache object.
wfDebugLog( $logGroup, $text, $dest='all', array $context=[])
Send a line to a supplementary debug log file, if configured, or main debug log if not.
wfShorthandToInteger( $string='', $default=-1)
Converts shorthand byte notation to integer form.
wfMemoryLimit()
Set PHP's memory limit to the larger of php.ini or $wgMemoryLimit.
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Throws a warning that $function is deprecated.
$wgGroupPermissions['sysop']['replacetext']
$wgGalleryOptions
Default parameters for the "<gallery>" tag.
if(!is_object($wgAuth)) if( $wgAuth &&! $wgAuth instanceof MediaWiki\Auth\AuthManagerAuthPlugin $ps_session)
if(! $wgEmergencyContact) if(! $wgPasswordSender) if(! $wgNoReplyAddress) if( $wgSecureLogin &&substr( $wgServer, 0, 2) !=='//' $wgVirtualRestConfig)['global']['domain']
if($wgInvalidateCacheOnLocalSettingsChange) if( $wgNewUserLog) if($wgPageLanguageUseDB) if( $wgCookieSecure==='detect') if($wgProfileOnly) if( $wgMinimalPasswordLength !==false) if($wgMaximalPasswordLength !==false) if(! $wgSessionsInObjectCache) $wgSessionsInObjectCache
if( $wgRCFilterByAge) $wgDefaultUserOptions['rcdays']
if(defined( 'MW_SETUP_CALLBACK')) $fname
Customization point after all loading (constants, functions, classes, DefaultSettings,...
if( $wgUseFileCache|| $wgUseSquid) $wgHtml5
$wgCanonicalNamespaceNames
Definitions of the NS_ constants are in Defines.php.
global $wgCommandLineMode
foreach( $wgExtensionFunctions as $func) if(!defined('MW_NO_SESSION') &&! $wgCommandLineMode) if(! $wgCommandLineMode) $wgFullyInitialised
if(is_array( $wgExtraNamespaces)) $wgDummyLanguageCodes
$wgEnotifRevealEditorAddress
if( $wgExperimentalHtmlIds) $rcMaxAgeDays
if(!defined( 'MEDIAWIKI')) $wgProfiler
This file is not a valid entry point, perform no further processing unless MEDIAWIKI is defined.
$wgUsersNotifiedOnAllChanges
if(! $wgDBerrorLogTZ) $wgRequest
if($wgLocalInterwiki) if( $wgSharedPrefix===false) if($wgSharedSchema===false) if(! $wgCookiePrefix) $wgCookiePrefix
if( $wgServerName !==false) $wgServerName
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($wgEnableParserCache===false) if( $wgRightsIcon) if(isset($wgFooterIcons $wgNamespaceProtection[ 'copyright'][ 'copyright']) &&$wgFooterIcons[ 'copyright'][ 'copyright']===[]) if(isset( $wgFooterIcons['poweredby']) &&isset( $wgFooterIcons['poweredby']['mediawiki']) && $wgFooterIcons['poweredby']['mediawiki']['src']===null)[NS_MEDIAWIKI]
Unconditional protection for NS_MEDIAWIKI since otherwise it's too easy for a sysadmin to set $wgName...
$wgLockManagers[]
Initialise $wgLockManagers to include basic FS version.
$wgNamespaceAliases['Image']
The canonical names of namespaces 6 and 7 are, as of v1.14, "File" and "File_talk".
if( $wgCanonicalServer===false) $serverParts
if( $wgSkipSkin) $wgSkipSkins[]
if($wgMetaNamespace===false) if( $wgResourceLoaderMaxQueryLength===false) $wgMinUploadChunkSize
Class to allow throwing wfDeprecated warnings when people use globals that we do not want them to.
Exception class which takes an HTML error message, and does not produce a backtrace.
Accesses configuration settings from $GLOBALS.
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Show an error that looks like an HTTP server error.
Functions to get cache objects.
static schedulePingback()
Schedule a deferred callable that will check if a pingback should be sent and (if so) proceed to send...
static instance()
Singleton.
static getMain()
Get the RequestContext object associated with the main request.
Class to implement stub globals, which are globals that delay loading the their associated module cod...
Stub object for the user language.
static getMaxUploadSize( $forType=null)
Get the MediaWiki maximum uploaded file size for given type of upload, based on $wgMaxUploadSize.
static getMaxPhpUploadSize()
Get the PHP maximum uploaded file size, based on ini settings.
static isValidUserName( $name)
Is the input a valid username?
static detectProtocol()
Detect the protocol from $_SERVER.
controlled by $wgMainCacheType controlled by $wgParserCacheType controlled by $wgMessageCacheType If you set CACHE_NONE to one of the three control default value for MediaWiki still create a but requests to it are no ops and we always fall through to the database If the cache daemon can t be it should also disable itself fairly smoothly By $wgMemc is used but when it is $parserMemc or $messageMemc this is mentioned $wgDBname
CACHE_MEMCACHED $wgMainCacheType