The only two usages left since r91590 are php version checks for index/load/api.php, and $wgAPIEnabled check in api.php. Consolidate all of the "bailing for invalid version" into PHPVersionError.php. Leaving $wgAPIEnabled as the only user was silly, so just echo and die like wfDie() would've done
// So extensions (and other code) can check whether they're running in API mode
define( 'MW_API', true );
-// We want a plain message on catastrophic errors that machines can identify
-function wfDie( $msg = '' ) {
- header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
- echo $msg;
- die( 1 );
-}
-
-// Die on unsupported PHP versions
-if( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ){
- $version = htmlspecialchars( $wgVersion );
- wfDie( "MediaWiki $version requires at least PHP version 5.2.3." );
+// Bail if PHP is too low
+if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ) {
+ require( dirname( __FILE__ ) . '/includes/PHPVersionError.php' );
+ wfPHPVersionError( 'api.php' );
}
// Initialise common code.
// Verify that the API has not been disabled
if ( !$wgEnableAPI ) {
- wfDie( 'MediaWiki API is not enabled for this site. Add the following line to your LocalSettings.php'
- . '<pre><b>$wgEnableAPI=true;</b></pre>'
- );
+ header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
+ echo( 'MediaWiki API is not enabled for this site. Add the following line to your LocalSettings.php'
+ . '<pre><b>$wgEnableAPI=true;</b></pre>' );
+ die(1);
}
// Selectively allow cross-site AJAX
return MessageCache::singleton()->get( $key, /*useDB*/true, /*content*/false ) === false;
}
-/**
- * Print an error message and die, returning nonzero to the shell if any. Plain die()
- * fails to return nonzero to the shell if you pass a string. Entry points may customise
- * this function to return a prettier error message, but implementations must not assume
- * access to any of the usual MediaWiki infrastructure (AutoLoader, localisation, database,
- * etc). This should not be called directly once $wgFullyInitialised is set; instead,
- * throw an exception and let Exception.php handle whether or not it's possible to show
- * a prettier error.
- *
- * @param $msg String
- */
-if( !function_exists( 'wfDie' ) ){
- function wfDie( $msg = '' ) {
- echo $msg;
- die( 1 );
- }
-}
-
/**
* Throw a debugging exception. This function previously once exited the process,
* but now throws an exception instead, with similar results.
// has structures (try/catch, foo()->bar(), etc etc) which throw parse errors in PHP 4.
// Setup.php and ObjectCache.php have structures invalid in PHP 5.0 and 5.1, respectively.
if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ) {
- $phpversion = htmlspecialchars( phpversion() );
- $errorMsg = <<<ENDL
- <p>
- MediaWiki requires PHP 5.2.3 or higher. You are running PHP $phpversion.
- </p>
- <p>
- Please consider <a href="http://www.php.net/downloads.php">upgrading your copy of PHP</a>.
- PHP versions less than 5.3.0 are no longer supported by the PHP Group and will not receive
- security or bugfix updates.
- </p>
- <p>
- If for some reason you are unable to upgrade your PHP version, you will need to
- <a href="http://www.mediawiki.org/wiki/Download">download</a> an older version
- of MediaWiki from our website. See our
- <a href="http://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a>
- for details of which versions are compatible with prior versions of PHP.
- </p>
-ENDL;
- wfDie( $errorMsg );
+ require( dirname( __FILE__ ) . '/includes/PHPVersionError.php' );
+ wfPHPVersionError( 'index.php' );
}
# Initialise common code. This gives us access to GlobalFunctions, the AutoLoader, and
$mediaWiki = new MediaWiki();
$mediaWiki->run();
-
-/**
- * Display something vaguely comprehensible in the event of a totally unrecoverable error.
- * Does not assume access to *anything*; no globals, no autloader, no database, no localisation.
- * Safe for PHP4 (and putting this here means that WebStart.php and GlobalSettings.php
- * no longer need to be).
- *
- * Calling this function kills execution immediately.
- *
- * @param $errorMsg String fully-escaped HTML
- */
-function wfDie( $errorMsg ){
- // Use the version set in DefaultSettings if possible, but don't rely on it
- global $wgVersion, $wgLogo;
- $version = isset( $wgVersion ) && $wgVersion
- ? htmlspecialchars( $wgVersion )
- : '';
-
- $script = $_SERVER['SCRIPT_NAME'];
- $path = pathinfo( $script, PATHINFO_DIRNAME ) . '/';
- $path = str_replace( '//', '/', $path );
-
- $logo = isset( $wgLogo ) && $wgLogo
- ? $wgLogo
- : $path . 'skins/common/images/mediawiki.png';
- $encLogo = htmlspecialchars( $logo );
-
- header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
- header( 'Content-type: text/html; charset=UTF-8' );
- // Don't cache error pages! They cause no end of trouble...
- header( 'Cache-control: none' );
- header( 'Pragma: nocache' );
-
- ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns='http://www.w3.org/1999/xhtml' lang='en'>
- <head>
- <title>MediaWiki <?php echo $version; ?></title>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
- <style type='text/css' media='screen'>
- body {
- color: #000;
- background-color: #fff;
- font-family: sans-serif;
- padding: 2em;
- text-align: center;
- }
- p, img, h1 {
- text-align: left;
- margin: 0.5em 0;
- }
- h1 {
- font-size: 120%;
- }
- </style>
- </head>
- <body>
- <img src="<?php echo $encLogo; ?>" alt='The MediaWiki logo' />
- <h1>MediaWiki <?php echo $version; ?> internal error</h1>
- <div class='error'> <?php echo $errorMsg; ?> </div>
- </body>
-</html>
- <?php
- die( 1 );
-}
*
*/
-// We want error messages to not be interpreted as CSS or JS
-function wfDie( $msg = '' ) {
- header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
- echo "/* $msg */";
- die( 1 );
-}
-
-// Die on unsupported PHP versions
-if( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ){
- $version = htmlspecialchars( $wgVersion );
- wfDie( "MediaWiki $version requires at least PHP version 5.2.3." );
+// Bail if PHP is too low
+if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ) {
+ require( dirname( __FILE__ ) . '/includes/PHPVersionError.php' );
+ wfPHPVersionError( 'load.php' );
}
if ( isset( $_SERVER['MW_COMPILED'] ) ) {
$maintClass = false;
// Make sure we're on PHP5 or better
-if ( version_compare( PHP_VERSION, '5.2.3' ) < 0 ) {
- die ( "Sorry! This version of MediaWiki requires PHP 5.2.3; you are running " .
- PHP_VERSION . ".\n\n" .
- "If you are sure you already have PHP 5.2.3 or higher installed, it may be\n" .
- "installed in a different path from PHP " . PHP_VERSION . ". Check with your system\n" .
- "administrator.\n" );
+if ( !function_exists( 'version_compare' ) || version_compare( PHP_VERSION, '5.2.3' ) < 0 ) {
+ require_once( dirname( __FILE__ ) . '/../includes/PHPVersionError.php' );
+ wfPHPVersionError( 'cli' );
}
// Wrapper for posix_isatty()