Clean up the mess that is wfDie (resolves r85918). wfDie() doesn't exist anymore...
authorChad Horohoe <demon@users.mediawiki.org>
Wed, 6 Jul 2011 21:01:12 +0000 (21:01 +0000)
committerChad Horohoe <demon@users.mediawiki.org>
Wed, 6 Jul 2011 21:01:12 +0000 (21:01 +0000)
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

api.php
includes/GlobalFunctions.php
index.php
load.php
maintenance/Maintenance.php

diff --git a/api.php b/api.php
index 7fff048..39d27dd 100644 (file)
--- a/api.php
+++ b/api.php
 // 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.
@@ -67,9 +60,10 @@ if ( !$wgRequest->checkUrlExtension() ) {
 
 // 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
index edf8b88..166af9d 100644 (file)
@@ -1243,24 +1243,6 @@ function wfEmptyMsg( $key ) {
        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.
index fb415bc..8b53e2c 100644 (file)
--- a/index.php
+++ b/index.php
 // 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
@@ -72,68 +55,3 @@ if ( isset( $_SERVER['MW_COMPILED'] ) ) {
 
 $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 );
-}
index 74af68f..6e82971 100644 (file)
--- a/load.php
+++ b/load.php
  *
  */
 
-// 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'] ) ) {
index b488208..7d53854 100644 (file)
@@ -27,12 +27,9 @@ define( 'DO_MAINTENANCE', RUN_MAINTENANCE_IF_MAIN ); // original name, harmless
 $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()