31 if ( !defined(
'MEDIAWIKI' ) ) {
43 echo
"Error, Setup.php must be included from the file scope, after DefaultSettings.php\n";
47 mb_internal_encoding(
'UTF-8' );
88 $wgLogo =
"$wgResourceBasePath/resources/assets/wiki.png";
97 if ( $wgReadOnlyFile ===
false ) {
98 $wgReadOnlyFile =
"{$wgUploadDirectory}/lock_yBgMBwiR";
116 if ( $wgRightsIcon ) {
117 $wgRightsIcon = str_replace(
118 "{$wgStylePath}/common/images/",
119 "{$wgResourceBasePath}/resources/assets/licenses/",
127 if ( $wgRightsIcon || $wgRightsText ) {
129 'url' => $wgRightsUrl,
130 'src' => $wgRightsIcon,
131 'alt' => $wgRightsText,
141 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png";
143 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_132x47.png 1.5x, " .
144 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_176x62.png 2x";
168 'name' =>
'fsLockManager',
169 'class' =>
'FSLockManager',
170 'lockDirectory' =>
"{$wgUploadDirectory}/lockdir",
173 'name' =>
'nullLockManager',
174 'class' =>
'NullLockManager',
182 'class' =>
'LocalRepo',
186 'scriptExtension' =>
'.php',
201 'class' =>
'ForeignDBRepo',
221 'class' =>
'FileRepo',
235 'class' =>
'ForeignAPIRepo',
236 'name' =>
'wikimediacommons',
237 'apibase' =>
'https://commons.wikimedia.org/w/api.php',
238 'url' =>
'https://upload.wikimedia.org/wikipedia/commons',
239 'thumbUrl' =>
'https://upload.wikimedia.org/wikipedia/commons/thumb',
241 'transformVia404' =>
true,
242 'fetchDescription' =>
true,
243 'descriptionCacheExpiry' => 43200,
244 'apiThumbCacheExpiry' => 86400,
255 if ( !isset( $repo[
'directory'] ) && $repo[
'class'] ===
'ForeignAPIRepo' ) {
258 if ( !isset( $repo[
'backend'] ) ) {
259 $repo[
'backend'] = $repo[
'name'] .
'-backend';
265 if ( $wgRCFilterByAge ) {
269 sort( $wgRCLinkDays );
272 for ( $i = 0; $i < count( $wgRCLinkDays ); $i++ ) {
275 $wgRCLinkDays = array_slice( $wgRCLinkDays, 0, $i + 1,
false );
297 call_user_func(
function ()
use ( $wgValidSkinNames ) {
301 $class =
"Skin$skin";
302 return new $class(
$name );
306 $factory->register(
'fallback',
'Fallback',
function () {
310 $factory->register(
'apioutput',
'ApiOutput',
function () {
360 unset( $wgGroupPermissions[
'user'][
'sendemail'] );
372 $suhosinMaxValueLength = (int)ini_get(
'suhosin.get.max_value_length' );
373 if ( $suhosinMaxValueLength > 0 && $suhosinMaxValueLength < 2000 ) {
378 unset( $suhosinMaxValueLength );
388 ini_get(
'post_max_size' ) ?: ini_get(
'hhvm.server.max_post_size' ),
390 ) ?: PHP_INT_MAX ) - 1024
429 $wgDebugToolbar =
false;
442 MediaWiki\suppressWarnings();
444 MediaWiki\restoreWarnings();
447 if ( $wgNewUserLog ) {
449 $wgLogTypes[] =
'newusers';
450 $wgLogNames[
'newusers'] =
'newuserlogpage';
451 $wgLogHeaders[
'newusers'] =
'newuserlogpagetext';
452 $wgLogActionsHandlers[
'newusers/newusers'] =
'NewUsersLogFormatter';
453 $wgLogActionsHandlers[
'newusers/create'] =
'NewUsersLogFormatter';
454 $wgLogActionsHandlers[
'newusers/create2'] =
'NewUsersLogFormatter';
455 $wgLogActionsHandlers[
'newusers/byemail'] =
'NewUsersLogFormatter';
456 $wgLogActionsHandlers[
'newusers/autocreate'] =
'NewUsersLogFormatter';
459 if ( $wgPageLanguageUseDB ) {
460 $wgLogTypes[] =
'pagelang';
461 $wgLogActionsHandlers[
'pagelang/pagelang'] =
'PageLangLogFormatter';
464 if ( $wgCookieSecure ===
'detect' ) {
468 if ( $wgProfileOnly ) {
469 $wgDebugLogGroups[
'profileoutput'] = $wgDebugLogFile;
470 $wgDebugLogFile =
'';
474 if ( $wgMinimalPasswordLength !==
false ) {
475 $wgPasswordPolicy[
'policies'][
'default'][
'MinimalPasswordLength'] = $wgMinimalPasswordLength;
478 if ( $wgMaximalPasswordLength !==
false ) {
479 $wgPasswordPolicy[
'policies'][
'default'][
'MaximalPasswordLength'] = $wgMaximalPasswordLength;
484 wfDeprecated(
'$wgSessionsInObjectCache = false',
'1.27' );
491 "Session data will be stored in \"$cacheType\" cache with " .
492 "expiry $wgObjectCacheSessionExpiry seconds"
503 if ( defined(
'MW_NO_SESSION' ) ) {
514 if ( $wgDebugToolbar && !$wgCommandLineMode ) {
518 if ( !class_exists(
'AutoLoader' ) ) {
519 require_once
"$IP/includes/AutoLoader.php";
523 if ( !$wgCommandLineMode ) {
524 header_register_callback(
function () {
526 foreach ( headers_list()
as $header ) {
528 $headers[strtolower( trim(
$name ) )][] = trim(
$value );
531 if ( isset( $headers[
'set-cookie'] ) ) {
532 $cacheControl = isset( $headers[
'cache-control'] )
533 ? implode(
', ', $headers[
'cache-control'] )
536 if ( !preg_match(
'/(?:^|,)\s*(?:private|no-cache|no-store)\s*(?:$|,)/i', $cacheControl ) ) {
537 header(
'Expires: Thu, 01 Jan 1970 00:00:00 GMT' );
538 header(
'Cache-Control: private, max-age=0, s-maxage=0' );
540 'Cookies set on {url} with Cache-Control "{cache-control}"', [
542 'cookies' => $headers[
'set-cookie'],
543 'cache-control' => $cacheControl ?:
'<not set>',
553 require_once
"$IP/includes/compat/normal/UtfNormalUtil.php";
558 foreach ( [
'wgArticlePath',
'wgVariantArticlePath' ]
as $varName ) {
559 if ( $$varName && !preg_match(
'/^(https?:\/\/|\/)/', $$varName ) ) {
561 "If you use a relative URL for \$$varName, it must start " .
562 'with a slash (<code>/</code>).<br><br>See ' .
563 "<a href=\"https://www.mediawiki.org/wiki/Manual:\$$varName\">" .
564 "https://www.mediawiki.org/wiki/Manual:\$$varName</a>."
580 wfWarn(
'$wgServerName should be derived from $wgCanonicalServer, '
581 .
'not customized. Overwriting $wgServerName.' );
599 if ( $wgSecureLogin && substr(
$wgServer, 0, 2 ) !==
'//' ) {
600 $wgSecureLogin =
false;
601 wfWarn(
'Secure login was enabled on a server that only supports '
602 .
'HTTP or HTTPS. Disabling secure login.' );
614 if ( !isset( $wgDisableCounters ) ) {
615 $wgDisableCounters =
true;
623 'class' =>
'WANObjectCache',
625 'channels' => [
'purge' =>
'wancache-main-default-purge' ]
642 MediaWiki\suppressWarnings();
644 MediaWiki\restoreWarnings();
660 if ( $wgCommandLineMode ) {
661 wfDebug(
"\n\nStart command line script $self\n" );
663 $debug =
"\n\nStart request {$wgRequest->getMethod()} {$wgRequest->getRequestURL()}\n";
665 if ( $wgDebugPrintHttpHeaders ) {
666 $debug .=
"HTTP HEADERS:\n";
669 $debug .=
"$name: $value\n";
683 'cluster: ' . get_class(
$wgMemc ) .
708 if ( !is_object( $wgAuth ) ) {
710 Hooks::run(
'AuthPluginSetup', [ &$wgAuth ] );
712 if ( $wgAuth && !$wgAuth instanceof
MediaWiki\Auth\AuthManagerAuthPlugin ) {
714 new MediaWiki\Auth\TemporaryPasswordPrimaryAuthenticationProvider( [
715 'authoritative' =>
false,
717 new MediaWiki\Auth\AuthPluginPrimaryAuthenticationProvider( $wgAuth ),
718 new MediaWiki\Auth\LocalPasswordPrimaryAuthenticationProvider( [
719 'authoritative' =>
true,
721 ],
'$wgAuth is ' . get_class( $wgAuth ) );
731 if ( !defined(
'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
734 session_name( $wgSessionName ? $wgSessionName :
$wgCookiePrefix .
'_session' );
739 if ( !defined(
'MW_NO_SESSION_HANDLER' ) ) {
741 MediaWiki\Session\SessionManager::singleton()
748 }
catch ( OverflowException $ex ) {
749 if ( isset( $ex->sessionInfos ) && count( $ex->sessionInfos ) >= 2 ) {
753 foreach ( $ex->sessionInfos
as $info ) {
754 $list[] = $info->getProvider()->describe(
$wgContLang );
766 if ( $session->isPersistent() ) {
771 if (
MediaWiki\Session\PHPSessionHandler::isEnabled() &&
772 ( $session->isPersistent() || $session->shouldRememberUser() )
775 session_id( $session->getId() );
776 MediaWiki\quietCall(
'session_start' );
783 if ( !defined(
'MW_NO_SESSION_HANDLER' ) ) {
785 MediaWiki\Session\SessionManager::singleton()
823 foreach ( $wgExtensionFunctions
as $func ) {
825 if ( is_object( $func ) && $func instanceof Closure ) {
826 $profName =
$fname .
'-extensions-closure';
827 } elseif ( is_array( $func ) ) {
828 if ( is_object( $func[0] ) ) {
829 $profName =
$fname .
'-extensions-' . get_class( $func[0] ) .
'::' . $func[1];
831 $profName =
$fname .
'-extensions-' . implode(
'::', $func );
834 $profName =
$fname .
'-extensions-' . strval( $func );
838 call_user_func( $func );
844 if ( !defined(
'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
850 MediaWiki\Auth\AuthManager::AUTOCREATE_SOURCE_SESSION,
855 'event' =>
'autocreate',
860 unset( $sessionUser );
863 wfDebug(
"Fully initialised\n" );
$wgUseInstantCommons
Use Commons as a remote file repository.
$wgFooterIcons
Abstract list of footer icons for skins in place of old copyrightico and poweredbyico code You can ad...
deferred txt A few of the database updates required by various functions here can be deferred until after the result page is displayed to the user For updating the view updating the linked to tables after a etc PHP does not yet have any way to tell the server to actually return and disconnect while still running these but it might have such a feature in the future We handle these by creating a deferred update object and putting those objects on a global list
$wgMainStash
Main object stash type.
$wgHashedSharedUploadDirectory
Set the following to false especially if you have a set of files that need to be accessible by all wi...
$wgCanonicalNamespaceNames
Definitions of the NS_ constants are in Defines.php.
$wgScript
The URL path to index.php.
$wgDBerrorLogTZ
Timezone to use in the error log.
$wgVersion
MediaWiki version number.
$wgSitename
Name of the site.
$wgUsersNotifiedOnAllChanges
SkinTemplate class for API output.
wfShorthandToInteger($string= '', $default=-1)
Converts shorthand byte notation to integer form.
Apache License January AND DISTRIBUTION Definitions License shall mean the terms and conditions for use
if($wgMetaNamespace===false) if($wgResourceLoaderMaxQueryLength===false) $wgMinUploadChunkSize
static instance()
Singleton.
$wgDBpassword
Database user's password.
$wgSharedUploadDBname
DB name with metadata about shared directory.
$wgThumbnailScriptPath
Give a path here to use thumb.php for thumbnail generation on client request, instead of generating t...
$wgRepositoryBaseUrl
Base URL for a repository wiki.
static getInstance($id)
Get a cached instance of the specified type of cache object.
$wgLocalFileRepo
File repository structures.
$wgDBmwschema
Mediawiki schema.
$wgMetaNamespace
Name of the project namespace.
$wgDBserver
Database host name or IP address.
if($wgUseFileCache||$wgUseSquid) $wgHtml5
$wgDBuser
Database username.
if(!is_object($wgAuth)) if($wgAuth &&!$wgAuth instanceof MediaWiki\Auth\AuthManagerAuthPlugin) $ps_session
$wgMainWANCache
Main Wide-Area-Network cache type.
$wgSharedUploadDirectory
Path on the file system where shared uploads can be found.
$wgTmpDirectory
The local filesystem path to a temporary directory.
when a variable name is used in a it is silently declared as a new local masking the global
wfExpandUrl($url, $defaultProto=PROTO_CURRENT)
Expand a potentially local URL to a fully-qualified URL.
$wgWANObjectCaches
Advanced WAN object cache configuration.
wfGetMessageCacheStorage()
Get the cache object used by the message cache.
$wgGenerateThumbnailOnParse
Allow thumbnail rendering on page view.
$wgEnableEmail
Set to true to enable the e-mail basic features: Password reminders, etc.
wfDebug($text, $dest= 'all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
wfGetParserCacheStorage()
Get the cache object used by the parser cache.
static getMaxUploadSize($forType=null)
Get the MediaWiki maximum uploaded file size for given type of upload, based on $wgMaxUploadSize.
$wgCacheDirectory
Directory for caching data in the local filesystem.
$wgInvalidateCacheOnLocalSettingsChange
Invalidate various caches when LocalSettings.php changes.
$wgUseSquid
Enable/disable CDN.
Show an error that looks like an HTTP server error.
static isValidUserName($name)
Is the input a valid username?
if(is_array($wgExtraNamespaces)) $wgContLanguageCode
$wgLanguageCode
Site language code.
wfDebugLog($logGroup, $text, $dest= 'all', array $context=[])
Send a line to a supplementary debug log file, if configured, or main debug log if not...
global $wgCommandLineMode
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['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...
$wgStylePath
The URL path of the skins directory.
$wgParserCacheType
The cache type for storing article HTML.
wfTempDir()
Tries to get the system directory for temporary files.
static getMain()
Static methods.
$wgUseFileCache
This will cache static pages for non-logged-in users to reduce database traffic on public sites...
$wgDeletedDirectory
What directory to place deleted uploads in.
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.
$wgLocalInterwikis
Array for multiple $wgLocalInterwiki values, in case there are several interwiki prefixes that point ...
$wgSharedUploadPath
Full path on the web server where shared uploads can be found.
$wgEnotifRevealEditorAddress
$wgUsePathInfo
Whether to support URLs like index.php/Page_title These often break when PHP is set up in CGI mode...
$wgResourceBasePath
The default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
CACHE_MEMCACHED $wgMainCacheType
wfDeprecated($function, $version=false, $component=false, $callerOffset=2)
Throws a warning that $function is deprecated.
$wgSharedDB
Shared database for multiple wikis.
$wgEnableParserCache
Kept for extension compatibility; see $wgParserCacheType.
Class to implement stub globals, which are globals that delay loading the their associated module cod...
static run($event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped noclasses just before the function returns a value If you return an< a > element with HTML attributes $attribs and contents $html will be returned If you return $ret will be returned $skin
static detectProtocol()
Detect the protocol from $_SERVER.
$wgLocaltimezone
Fake out the timezone that the server thinks it's in.
$wgLockManagers[]
Initialise $wgLockManagers to include basic FS version.
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
$wgSessionsInMemcached
Deprecated alias for $wgSessionsInObjectCache.
$wgPasswordSender
Sender email address for e-mail notifications.
if($wgServerName!==false) $wgServerName
Exception class which takes an HTML error message, and does not produce a backtrace.
$wgSharedUploadDBprefix
Optional table prefix used in database.
SkinTemplate class for the fallback skin.
static newFromKey($key)
Factory function that is just wrapper for the real constructor.
$wgSessionCacheType
The cache type for storing session data.
$wgUploadPath
The URL path for the images directory.
$wgEmergencyContact
Site admin email address.
$wgExtraNamespaces
Additional namespaces.
static getGlobalRequestURL()
Return the path and query string portion of the main request URI.
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
if($wgCanonicalServer===false) $serverParts
if($wgLocalInterwiki) if($wgSharedPrefix===false) if($wgSharedSchema===false) if(!$wgCookiePrefix) $wgCookiePrefix
$wgLocalStylePath
The URL path of the skins directory.
$wgSharedThumbnailScriptPath
if(!defined( 'MEDIAWIKI')) $fname
This file is not a valid entry point, perform no further processing unless MEDIAWIKI is defined...
static installHandler()
Install handlers with PHP.
$wgNamespaceAliases['Image']
The canonical names of namespaces 6 and 7 are, as of v1.14, "File" and "File_talk".
$wgScriptPath
The path we should point to.
$wgLocalInterwiki
The interwiki prefix of the current wiki, or false if it doesn't have one.
$wgCacheSharedUploads
Cache shared metadata in memcached.
Stub object for the user language.
wfGetMainCache()
Get the main cache object.
$wgExtensionAssetsPath
The URL path of the extensions directory.
if(!$wgEmergencyContact) if(!$wgPasswordSender) if(!$wgNoReplyAddress) if($wgSecureLogin &&substr($wgServer, 0, 2)!== '//') $wgVirtualRestConfig['global']['domain']
$wgDBprefix
Table name prefix.
$wgAllowHTMLEmail
For parts of the system that have been updated to provide HTML email content, send both text and HTML...
wfMemoryLimit()
Set PHP's memory limit to the larger of php.ini or $wgMemoryLimit.
$wgCanonicalServer
Canonical URL of the server, to use in IRC feeds and notification e-mails.
$wgHashedUploadDirectory
Set this to false if you do not want MediaWiki to divide your images directory into many subdirectori...
if($wgInvalidateCacheOnLocalSettingsChange) if($wgNewUserLog) if($wgPageLanguageUseDB) if($wgCookieSecure=== 'detect') if($wgProfileOnly) if($wgMinimalPasswordLength!==false) if($wgMaximalPasswordLength!==false) if(!$wgSessionsInObjectCache &&!$wgSessionsInMemcached) $wgSessionsInObjectCache
$wgLogo
The URL path of the wiki logo.
$wgLocalTZoffset
Set an offset from UTC in minutes to use for the default timezone setting for anonymous users and new...
static getMaxPhpUploadSize()
Get the PHP maximum uploaded file size, based on ini settings.
$wgServer
URL of the server.
$wgGitInfoCacheDirectory
Directory where GitInfo will look for pre-computed cache files.
$wgFetchCommonsDescriptions
Fetch commons image description pages and display them on the local wiki?
$wgUploadBaseUrl
If set, this URL is added to the start of $wgUploadPath to form a complete upload URL...
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
$wgResourceLoaderMaxQueryLength
If set to a positive number, ResourceLoader will not generate URLs whose query string is more than th...
string $wgPHPSessionHandling
Whether to use PHP session handling ($_SESSION and session_*() functions)
wfParseUrl($url)
parse_url() work-alike, but non-broken.
static factory($code)
Get a cached or new language object for a given language code.
$wgFileBlacklist
Files with these extensions will never be allowed as uploads.
$wgLoadScript
The URL path to load.php.
$wgNoReplyAddress
Reply-To address for e-mail notifications.
static getDefaultInstance()
$wgCacheEpoch
Set this to current time to invalidate all prior cached pages.
$wgFileCacheDirectory
Directory where the cached page will be saved.
static init()
Enabled the debugger and load resource module.
$wgUseSharedUploads
If you operate multiple wikis, you can define a shared upload path here.
if(is_null($wgLocalTZoffset)) if(!$wgDBerrorLogTZ) $wgRequest
if($wgRCFilterByAge) $wgDefaultUserOptions['rcdays']
$wgUploadDirectory
The filesystem path of the images directory.
Allows to change the fields on the form that will be generated $name