40 'mb_substr' =>
'mbstring',
41 'xml_parser_create' =>
'xml',
42 'ctype_digit' =>
'ctype',
43 'json_decode' =>
'json',
45 'mime_content_type' =>
'fileinfo',
46 'intl_is_failure' =>
'intl',
81 $minimumVersion =
'7.4.3';
99 $passes = version_compare( PHP_VERSION, $minimumVersion,
'>=' );
101 $versionString =
"PHP $minimumVersion or higher";
104 if ( count( $knownBad ) ) {
105 $versionString .=
' (and not ' . implode(
', ', array_values( $knownBad ) ) .
')';
107 foreach ( $knownBad as $range ) {
109 if ( strpos( $range,
'-' ) ) {
110 $passes = $passes && !(
111 version_compare( PHP_VERSION, trim( strstr( $range,
'-',
true ) ),
'>=' )
112 && version_compare( PHP_VERSION, trim( substr( strstr( $range,
'-',
false ), 1 ) ),
'<' )
115 $passes = $passes && version_compare( PHP_VERSION, trim( $range ),
'<>' );
121 $cliText =
"Error: You are using an unsupported PHP version (PHP " . PHP_VERSION .
").\n"
122 .
"MediaWiki $this->mwVersion needs $versionString.\n\nCheck if you might have a newer "
123 .
"PHP executable with a different name.\n\n";
126 $web[
'intro'] =
"MediaWiki $this->mwVersion requires $versionString; you are using PHP "
129 $web[
'longTitle'] =
"Supported PHP versions";
131 $web[
'longHtml'] = <<<HTML
133 Please consider <a href=
"https://www.php.net/downloads.php">upgrading your copy of PHP</a>.
134 PHP versions less than v8.1.0 are no longer <a href=
"https://www.php.net/supported-versions.php">supported</a>
135 by the PHP Group and will not receive security or bugfix updates.
138 If
for some reason you are unable to upgrade your PHP version, you will need to
139 <a href=
"https://www.mediawiki.org/wiki/Download">download</a> an older version of
141 <a href=
"https://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a>
142 for details of which versions are compatible with prior versions of PHP.
157 if ( !file_exists( dirname( __FILE__ ) .
'/../vendor/autoload.php' ) ) {
158 $cliText =
"Error: You are missing some dependencies. \n"
159 .
"MediaWiki has dependencies that need to be installed via Composer\n"
160 .
"or from a separate repository. Please see\n"
161 .
"https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n"
162 .
"for help with installing them.";
165 $web[
'intro'] =
"Installing some dependencies is required.";
166 $web[
'longTitle'] =
'Dependencies';
168 $web[
'longHtml'] = <<<HTML
170 MediaWiki has dependencies that need to be installed via Composer
171 or from a separate repository. Please see the
172 <a href=
"https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries">instructions
173 for installing external libraries</a> on
MediaWiki.org.
186 $missingExtensions = array();
187 foreach ( $this->functionsExtensionsMapping as $function => $extension ) {
188 if ( !function_exists( $function ) ) {
189 $missingExtensions[] = $extension;
193 if ( $missingExtensions ) {
194 $missingExtText =
'';
195 $missingExtHtml =
'';
196 $baseUrl =
'https://www.php.net';
197 foreach ( $missingExtensions as $ext ) {
198 $missingExtText .=
" * $ext <$baseUrl/$ext>\n";
199 $missingExtHtml .=
"<li><b>$ext</b> "
200 .
"(<a href=\"$baseUrl/$ext\">more information</a>)</li>";
203 $cliText =
"Error: Missing one or more required PHP extensions. Please see\n"
204 .
"https://www.mediawiki.org/wiki/Manual:Installation_requirements#PHP\n"
205 .
"for help with installing them.\n"
206 .
"Please install or enable:\n" . $missingExtText;
209 $web[
'intro'] =
"Installing some PHP extensions is required.";
210 $web[
'longTitle'] =
'Required PHP extensions';
211 $web[
'longHtml'] = <<<HTML
213 You are missing one or more extensions to PHP that
MediaWiki requires to
run. Please see the
214 <a href=
"https://www.mediawiki.org/wiki/Manual:Installation_requirements#PHP">PHP
215 installation requirements</a> on
MediaWiki.org.
217 <p>Please install or enable:</p>
231 $protocol = isset( $_SERVER[
'SERVER_PROTOCOL'] ) ? $_SERVER[
'SERVER_PROTOCOL'] :
'HTTP/1.0';
233 header(
"$protocol 500 MediaWiki configuration Error" );
235 header(
'Cache-Control: no-cache' );
248 htmlspecialchars( str_replace(
'//',
'/', $this->scriptPath .
'/' ) .
249 'resources/assets/mediawiki.png' );
251 $introHtml = htmlspecialchars( $introText );
252 $longTitleHtml = htmlspecialchars( $longTitle );
254 header(
'Content-type: text/html; charset=UTF-8' );
256 $finalOutput = <<<HTML
258<html lang=
"en" dir=
"ltr">
260 <meta charset=
"UTF-8" />
261 <title>
MediaWiki {$this->mwVersion}</title>
262 <style media=
"screen">
265 background-color: #fff;
266 font-family: sans-serif;
283 <img src=
"{$encLogo}" alt=
"The MediaWiki logo" />
284 <h1>
MediaWiki {$this->mwVersion}
internal error</h1>
288 <h2>{$longTitleHtml}</h2>
312 if ( $this->format ===
'html' ) {
322 $finalOutput = $cliText;
325 echo
"$finalOutput\n";
339 $phpVersionCheck->setFormat( $format );
340 $phpVersionCheck->setScriptPath( $scriptPath );
341 $phpVersionCheck->checkRequiredPHPVersion();
342 $phpVersionCheck->checkVendorExistence();
343 $phpVersionCheck->checkExtensionExistence();
wfEntryPointCheck( $format='text', $scriptPath='/')
Check PHP version and that external dependencies are installed, and display an informative error if e...
Check PHP Version, as well as for composer dependencies in entry points, and display something vaguel...
setFormat( $format)
Set the format used for errors.
string $mwVersion
The number of the MediaWiki version used.
outputHTMLHeader()
Output headers that prevents error pages to be cached.
setScriptPath( $scriptPath)
Set the script path used for images in HTML-formatted errors.
triggerError( $web, $cliText)
Display something vaguely comprehensible in the event of a totally unrecoverable error.
getIndexErrorOutput( $introText, $longTitle, $longHtml)
Returns an error page, which is suitable for output to the end user via a web browser.
checkExtensionExistence()
Displays an error, if a PHP extension does not exist.
checkRequiredPHPVersion()
Displays an error, if the installed PHP version does not meet the minimum requirement.
string[] $functionsExtensionsMapping
A mapping of PHP functions to PHP extensions.
checkVendorExistence()
Displays an error, if the vendor/autoload.php file could not be found.
string $format
The format used for errors.