56use Psr\Log\LoggerInterface;
57use Wikimedia\RequestTimeout\RequestTimeout;
67if ( !defined(
'MEDIAWIKI' ) ) {
73if ( !isset( $GLOBALS[
'wgScopeTest'] ) || $GLOBALS[
'wgScopeTest'] !==
$wgScopeTest ) {
74 echo
"Error, Setup.php must be included from the file scope.\n";
81if ( ini_get(
'mbstring.func_overload' ) ) {
82 die(
'MediaWiki does not support installations where mbstring.func_overload is non-zero.' );
88if ( !defined(
'MW_ENTRY_POINT' ) ) {
94 define(
'MW_ENTRY_POINT',
'unknown' );
103require_once
"$IP/includes/AutoLoader.php";
104require_once
"$IP/includes/Defines.php";
105require_once
"$IP/includes/DefaultSettings.php";
106require_once
"$IP/includes/GlobalFunctions.php";
109if ( is_readable(
"$IP/vendor/autoload.php" ) ) {
110 require_once
"$IP/vendor/autoload.php";
111} elseif ( file_exists(
"$IP/vendor/autoload.php" ) ) {
112 die(
"$IP/vendor/autoload.php exists but is not readable" );
116if ( !interface_exists( LoggerInterface::class ) ) {
118 'MediaWiki requires the <a href="https://github.com/php-fig/log">PSR-3 logging ' .
119 "library</a> to be present. This library is not embedded directly in MediaWiki's " .
120 "git repository and must be installed separately by the end user.\n\n" .
121 'Please see the <a href="https://www.mediawiki.org/wiki/Download_from_Git' .
122 '#Fetch_external_libraries">instructions for installing libraries</a> on mediawiki.org ' .
123 'for help on installing the required components.'
126 trigger_error( $message, E_USER_ERROR );
129HeaderCallback::register();
133mb_internal_encoding(
'UTF-8' );
139if ( defined(
'MW_CONFIG_CALLBACK' ) ) {
142 if ( !defined(
'MW_CONFIG_FILE' ) ) {
143 define(
'MW_CONFIG_FILE',
"$IP/LocalSettings.php" );
145 require_once MW_CONFIG_FILE;
155if ( defined(
'MW_SETUP_CALLBACK' ) ) {
156 call_user_func( MW_SETUP_CALLBACK );
174putenv(
"LC_ALL=$wgShellLocale" );
218 $wgLogo =
"$wgResourceBasePath/resources/assets/wiki.png";
253 'class' => WANObjectCache::class,
259if ( isset( $wgFileBlacklist ) ) {
264if ( isset( $wgMimeTypeBlacklist ) ) {
269if ( isset( $wgEnableUserEmailBlacklist ) ) {
274if ( isset( $wgShortPagesNamespaceBlacklist ) ) {
286 "{$wgStylePath}/common/images/",
287 "{$wgResourceBasePath}/resources/assets/licenses/",
309 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_88x31.png";
311 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_132x47.png 1.5x, " .
312 "$wgResourceBasePath/resources/assets/poweredby_mediawiki_176x62.png 2x";
328 'name' =>
'fsLockManager',
329 'class' => FSLockManager::class,
330 'lockDirectory' =>
"{$wgUploadDirectory}/lockdir",
333 'name' =>
'nullLockManager',
334 'class' => NullLockManager::class,
344 'imageHeight' => 120,
345 'captionLength' =>
true,
347 'showDimensions' =>
true,
348 'mode' =>
'traditional',
356 'class' => LocalRepo::class,
383 'class' => ForeignDBRepo::class,
403 'class' => FileRepo::class,
417 'class' => ForeignAPIRepo::class,
418 'name' =>
'wikimediacommons',
419 'apibase' =>
'https://commons.wikimedia.org/w/api.php',
420 'url' =>
'https://upload.wikimedia.org/wikipedia/commons',
421 'thumbUrl' =>
'https://upload.wikimedia.org/wikipedia/commons/thumb',
423 'transformVia404' =>
true,
424 'fetchDescription' =>
true,
425 'descriptionCacheExpiry' => 43200,
426 'apiThumbCacheExpiry' => 0,
430 if ( !isset( $repo[
'directory'] ) && $repo[
'class'] === ForeignAPIRepo::class ) {
433 if ( !isset( $repo[
'backend'] ) ) {
434 $repo[
'backend'] = $repo[
'name'] .
'-backend';
525foreach ( LanguageCode::getNonstandardLanguageCodeMapping() as $code => $bcp47 ) {
526 $bcp47 = strtolower( $bcp47 );
537if ( isset( $wgSlaveLagWarning ) ) {
542 '$wgSlaveLagWarning set but $wgDatabaseReplicaLagWarning unchanged; using $wgSlaveLagWarning',
551if ( isset( $wgSlaveLagCritical ) ) {
556 '$wgSlaveLagCritical set but $wgDatabaseReplicaLagCritical unchanged; using $wgSlaveLagCritical',
566 Wikimedia\suppressWarnings();
568 Wikimedia\restoreWarnings();
613if ( defined(
'MW_NO_SESSION' ) ) {
624MediaWikiServices::allowGlobalInstance();
628define(
'MW_SERVICE_BOOTSTRAP_COMPLETE', 1 );
630MWExceptionHandler::installHandler();
637 '$wgServer must be set in LocalSettings.php. ' .
638 'See <a href="https://www.mediawiki.org/wiki/Manual:$wgServer">' .
639 'https://www.mediawiki.org/wiki/Manual:$wgServer</a>.'
653 wfWarn(
'$wgServerName should be derived from $wgCanonicalServer, '
654 .
'not customized. Overwriting $wgServerName.' );
674 wfWarn(
'Secure login was enabled on a server that only supports '
675 .
'HTTP or HTTPS. Disabling secure login.' );
685 MediaWikiServices::getInstance()->getDBLoadBalancer()->setTableAliases(
705if (
$wgRequest->getCookie(
'UseDC',
'' ) ===
'master' ) {
709 MediaWikiServices::getInstance()->getMainWANObjectCache()->useInterimHoldOffCaching(
false );
713(
static function () {
715 $logger = LoggerFactory::getInstance(
'wfDebug' );
717 $self = $_SERVER[
'PHP_SELF'] ??
'';
718 $logger->debug(
"\n\nStart command line script $self" );
720 $debug =
"\n\nStart request {$wgRequest->getMethod()} {$wgRequest->getRequestURL()}\n";
722 $debug .=
"HTTP HEADERS:\n";
723 foreach (
$wgRequest->getAllHeaders() as $name => $value ) {
724 $debug .=
"$name: $value\n";
726 $debug .=
"(end headers)";
754 HeaderCallback::warnIfHeadersSent();
760 if ( !defined(
'MW_NO_SESSION_HANDLER' ) ) {
761 MediaWiki\Session\PHPSessionHandler::install(
762 MediaWiki\Session\SessionManager::singleton()
766 $contLang = MediaWikiServices::getInstance()->getContentLanguage();
770 $session = MediaWiki\Session\SessionManager::getGlobalSession();
771 }
catch (
MediaWiki\Session\SessionOverflowException $ex ) {
775 foreach ( $ex->getSessionInfos() as $info ) {
776 $list[] = $info->getProvider()->describe( $contLang );
778 $list = $contLang->listToText( $list );
786 if ( $session->isPersistent() ) {
791 if (
MediaWiki\Session\PHPSessionHandler::isEnabled() &&
792 ( $session->isPersistent() || $session->shouldRememberUser() ) &&
793 session_id() !== $session->getId()
796 if ( session_id() !==
'' ) {
797 wfDebugLog(
'session',
'PHP session {old_id} was already started, changing to {new_id}',
'all', [
798 'old_id' => session_id(),
799 'new_id' => $session->getId(),
801 session_write_close();
803 session_id( $session->getId() );
811 if ( !defined(
'MW_NO_SESSION_HANDLER' ) ) {
812 MediaWiki\Session\PHPSessionHandler::install(
813 MediaWiki\Session\SessionManager::singleton()
823$wgUser =
new StubGlobalUser( RequestContext::getMain()->getUser() );
824register_shutdown_function(
static function () {
836$wgOut = RequestContext::getMain()->getOutput();
843 return MediaWikiServices::getInstance()->getParser();
856 call_user_func( $func );
863 $sessionUser = MediaWiki\Session\SessionManager::getGlobalSession()->getUser();
864 if ( $sessionUser->getId() === 0 &&
865 MediaWikiServices::getInstance()->getUserNameUtils()->isValid( $sessionUser->getName() )
867 $res = MediaWikiServices::getInstance()->getAuthManager()->autoCreateUser(
869 MediaWiki\Auth\AuthManager::AUTOCREATE_SOURCE_SESSION,
872 \MediaWiki\Logger\LoggerFactory::getInstance(
'authevents' )->info(
'Autocreation attempt', [
873 'event' =>
'autocreate',
874 'status' => strval(
$res ),
878 unset( $sessionUser );
889 MediaWiki\Session\SessionManager::singleton()->logPotentialSessionLeakage();
$wgProhibitedFileExtensions
Files with these extensions will never be allowed as uploads.
$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.
string $wgSharedUploadDirectory
Shortcut for the 'directory' setting of $wgForeignFileRepos.
$wgUsePathInfo
Whether to support URLs like index.php/Page_title These often break when PHP is set up in CGI mode.
$wgMemoryLimit
The minimum amount of memory that MediaWiki "needs"; MediaWiki will try to raise PHP's memory limit i...
$wgEmergencyContact
Site admin email address.
$wgDBprefix
Current wiki database table name prefix.
$wgDBuser
Database username.
$wgUpdateCompatibleMetadata
Shortcut for the 'updateCompatibleMetadata' setting of $wgLocalFileRepo.
string $wgPHPSessionHandling
Whether to use PHP session handling ($_SESSION and session_*() functions)
bool $wgCacheSharedUploads
Shortcut for the ForeignDBRepo 'hasSharedCache' setting in $wgForeignFileRepos.
bool string $wgSharedUploadDBname
Shortcut for the ForeignDBRepo 'dbName' setting in $wgForeignFileRepos.
$wgScript
The URL path to index.php.
$wgUseInstantCommons
Use Wikimedia Commons as a foreign file repository.
$wgEnableUserEmailMuteList
Set to true to enable user-to-user e-mail mutelist.
bool $wgHashedSharedUploadDirectory
Shortcut for the 'hashLevels' setting of $wgForeignFileRepos.
$wgCacheDirectory
Directory for caching data in the local filesystem.
$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.
$wgMainCacheType
Main cache type.
$wgPasswordPolicy
Password policy for the wiki.
$wgLogNames
Lists the message key string for each log type.
$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.
bool $wgGenerateThumbnailOnParse
Render thumbnails while parsing wikitext.
bool $wgUseSharedUploads
Shortcut for adding an entry to $wgForeignFileRepos.
string $wgSharedUploadDBprefix
Shortcut for the ForeignDBRepo 'tablePrefix' setting in $wgForeignFileRepos.
$wgDBmwschema
Current wiki database schema name.
$wgNoReplyAddress
Reply-To address for e-mail notifications.
$wgDBname
Current wiki database name.
$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.
$wgShortPagesNamespaceExclusions
Optional array of namespaces which should be excluded from Special:ShortPages.
$wgReadOnlyFile
If this lock file exists (size > 0), the wiki will be forced into read-only mode.
$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.
$wgPageCreationLog
Maintain a log of page creations at Special:Log/create?
$wgDatabaseReplicaLagCritical
$wgResourceBasePath
The default 'remoteBasePath' value for instances of ResourceLoaderFileModule.
$wgFooterIcons
Abstract list of footer icons for skins in place of old copyrightico and poweredbyico code You can ad...
$wgArticlePath
The URL path for primary article page views.
$wgUploadPath
The URL path for the images directory.
$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.
$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.
bool $wgHashedUploadDirectory
Shortcut for setting hashLevels=2 in $wgLocalFileRepo.
$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.
bool $wgFetchCommonsDescriptions
Shortcut for the 'fetchDescription' setting of $wgForeignFileRepos.
$wgGroupPermissions
Permission keys given to users in each group.
$wgRestPath
The URL path to the REST API Defaults to "{$wgScriptPath}/rest.php".
string $wgSharedThumbnailScriptPath
Shortcut for the 'thumbScriptUrl' setting of $wgForeignFileRepos.
$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.
$wgAllowHTMLEmail
For parts of the system that have been updated to provide HTML email content, send both text and HTML...
array false $wgLogos
Specification for different versions of the wiki logo.
$wgExtensionAssetsPath
The URL path of the extensions directory.
$wgForeignFileRepos
Enable the use of files from one or more other wikis.
$wgRepositoryBaseUrl
Shortcut for the 'descBaseUrl' setting of $wgForeignFileRepos.
$wgLogHeaders
Lists the message key string for descriptive text to be shown at the top of each log type.
int null $wgRequestTimeLimit
Set a limit on server request wall clock time.
$wgSharedDB
Shared database for multiple wikis.
$wgDebugDumpSql
Write SQL queries to the debug log.
$wgDatabaseReplicaLagWarning
If lag is higher than $wgDatabaseReplicaLagWarning, show a warning in some special pages (like watchl...
$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.
$wgMimeTypeExclusions
Files with these MIME types will never be allowed as uploads if $wgVerifyMimeType is enabled.
$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.
$wgMinimalPasswordLength
Specifies the minimal length of a user password.
$wgMetaNamespace
Name of the project namespace.
$wgLogo
The URL path of the wiki logo.
$wgPasswordSender
Sender email address for e-mail notifications.
$wgLogActionsHandlers
The same as above, but here values are names of classes, not messages.
string $wgSharedUploadPath
Shortcut for the 'url' setting of $wgForeignFileRepos.
$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.
$wgDBpassword
Database user's password.
$wgNewUserLog
Maintain a log of newusers at Special:Log/newusers?
global $wgCommandLineMode
wfParseUrl( $url)
parse_url() work-alike, but non-broken.
wfTempDir()
Tries to get the system directory for temporary files.
wfWarn( $msg, $callerOffset=1, $level=E_USER_NOTICE)
Send a warning either to the debug log or in a PHP error depending on $wgDevelopmentWarnings.
wfMemoryLimit( $newLimit)
Raise PHP's memory limit (if needed).
wfIniGetBool( $setting)
Safety wrapper around ini_get() for boolean settings.
wfExpandUrl( $url, $defaultProto=PROTO_CURRENT)
Expand a potentially local URL to a fully-qualified URL.
wfDebugLog( $logGroup, $text, $dest='all', array $context=[])
Send a line to a supplementary debug log file, if configured, or main debug log if not.
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Logs a warning that a deprecated feature was used.
$wgGalleryOptions
Default parameters for the "<gallery>" tag.
if(is_array($wgExtraNamespaces)) if(count( $wgDummyLanguageCodes) !==0) $wgDummyLanguageCodes
if(!defined('MW_NO_SESSION') &&! $wgCommandLineMode) if(! $wgCommandLineMode) $wgFullyInitialised
$wgEnotifRevealEditorAddress
if(!defined( 'MEDIAWIKI')) $wgScopeTest
Environment checks.
if(! $wgCookiePrefix) $wgCookiePrefix
if(MW_ENTRY_POINT==='index') MediaWiki Session SessionId null $wgInitialSessionId
The persistent session ID (if any) loaded at startup.
$wgUsersNotifiedOnAllChanges
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...
if(! $wgDBerrorLogTZ) $wgCanonicalNamespaceNames
Definitions of the NS_ constants are in Defines.php.
if( $wgServerName !==false) $wgServerName
$wgLockManagers[]
Initialise $wgLockManagers to include basic FS version.
$wgDefaultUserOptions['rcdays']
if($wgServer===false) if( $wgCanonicalServer===false) $wgVirtualRestConfig['global']['domain']
Class to allow throwing wfDeprecated warnings when people use globals that we do not want them to.
Abort the web request with a custom HTML string that will represent the entire response.
static runner()
Get a HookRunner instance for calling hooks using the new interfaces.
Show an error that looks like an HTTP server error.
static newFromKey( $key,... $params)
Factory function that is just wrapper for the real constructor.
static schedulePingback()
Schedule a deferred callable that will check if a pingback should be sent and (if so) proceed to send...
Stub object for the global user ($wgUser) that makes it possible to change the relevant underlying ob...
static bool $destructorDeprecationDisarmed
Stub object for the user language.
static detectProtocol()
Detect the protocol from $_SERVER.