diff options
Diffstat (limited to 'includes/PHPVersionCheck.php')
-rw-r--r-- | includes/PHPVersionCheck.php | 146 |
1 files changed, 94 insertions, 52 deletions
diff --git a/includes/PHPVersionCheck.php b/includes/PHPVersionCheck.php index eee9aa9c..ba3ff1ab 100644 --- a/includes/PHPVersionCheck.php +++ b/includes/PHPVersionCheck.php @@ -25,13 +25,23 @@ /** * Check php version and that external dependencies are installed, and * display an informative error if either condition is not satisfied. + * + * @note Since we can't rely on anything, the minimum PHP versions and MW current + * version are hardcoded here */ function wfEntryPointCheck( $entryPoint ) { + $mwVersion = '1.26'; + $minimumVersionPHP = '5.3.3'; + $phpVersion = PHP_VERSION; + if ( !function_exists( 'version_compare' ) - || version_compare( PHP_VERSION, '5.3.3' ) < 0 - || !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' ) + || version_compare( $phpVersion, $minimumVersionPHP ) < 0 ) { - wfPHPVersionError( $entryPoint ); + wfPHPVersionError( $entryPoint, $mwVersion, $minimumVersionPHP, $phpVersion ); + } + + if ( !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' ) ) { + wfMissingVendorError( $entryPoint, $mwVersion ); } } @@ -49,47 +59,39 @@ function wfEntryPointCheck( $entryPoint ) { * - api.php * - mw-config/index.php * - cli - * - * @note Since we can't rely on anything, the minimum PHP versions and MW current - * version are hardcoded here + * @param string $mwVersion The number of the MediaWiki version used + * @param string $title HTML code to be put within an <h2> tag + * @param string $shortText + * @param string $longText + * @param string $longHtml */ -function wfPHPVersionError( $type ) { - $mwVersion = '1.25'; - $minimumVersionPHP = '5.3.3'; - - $phpVersion = PHP_VERSION; +function wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $longHtml ) { $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'; - $message = "MediaWiki $mwVersion requires at least " - . "PHP version $minimumVersionPHP, you are using PHP $phpVersion. Installing some " - . " external dependencies (e.g. via composer) is also required."; if ( $type == 'cli' ) { - $finalOutput = "Error: You are missing some external dependencies or are using on older PHP version. \n" - . "MediaWiki $mwVersion needs PHP $minimumVersionPHP or higher.\n\n" - . "Check if you have a newer php executable with a different name, such as php5.\n\n" - . "MediaWiki now also has some external dependencies that need to be installed\n" - . "via composer or from a separate git repo. Please see\n" - . "https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n" - . "for help on installing the required components."; - } elseif ( $type == 'index.php' || $type == 'mw-config/index.php' ) { - $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] ); - if ( $type == 'mw-config/index.php' ) { - $dirname = dirname( $pathinfo['dirname'] ); - } else { - $dirname = $pathinfo['dirname']; - } - $encLogo = htmlspecialchars( - str_replace( '//', '/', $dirname . '/' ) . - 'resources/assets/mediawiki.png' - ); - + $finalOutput = $longText; + } else { header( "$protocol 500 MediaWiki configuration Error" ); - 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: no-cache' ); - $finalOutput = <<<HTML + if ( $type == 'index.php' || $type == 'mw-config/index.php' ) { + $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] ); + if ( $type == 'mw-config/index.php' ) { + $dirname = dirname( $pathinfo['dirname'] ); + } else { + $dirname = $pathinfo['dirname']; + } + $encLogo = htmlspecialchars( + str_replace( '//', '/', $dirname . '/' ) . + 'resources/assets/mediawiki.png' + ); + $shortHtml = htmlspecialchars( $shortText ); + + header( 'Content-type: text/html; charset=UTF-8' ); + + $finalOutput = <<<HTML <!DOCTYPE html> <html lang="en" dir="ltr"> <head> @@ -120,10 +122,43 @@ function wfPHPVersionError( $type ) { <h1>MediaWiki {$mwVersion} internal error</h1> <div class='error'> <p> - {$message} + {$shortHtml} </p> - <h2>Supported PHP versions</h2> + <h2>{$title}</h2> <p> + {$longHtml} + </p> + </div> + </body> +</html> +HTML; + // Handle everything that's not index.php + } else { + // So nothing thinks this is JS or CSS + $finalOutput = ( $type == 'load.php' ) ? "/* $shortText */" : $shortText; + } + } + echo "$finalOutput\n"; + die( 1 ); +} + +/** + * Display an error for the minimum PHP version requirement not being satisfied. + * + * @param string $type See wfGenericError + * @param string $mwVersion See wfGenericError + * @param string $minimumVersionPHP The minimum PHP version supported by MediaWiki + * @param string $phpVersion The current PHP version + */ +function wfPHPVersionError( $type, $mwVersion, $minimumVersionPHP, $phpVersion ) { + $shortText = "MediaWiki $mwVersion requires at least " + . "PHP version $minimumVersionPHP, you are using PHP $phpVersion."; + + $longText = "Error: You might be using on older PHP version. \n" + . "MediaWiki $mwVersion needs PHP $minimumVersionPHP or higher.\n\n" + . "Check if you have a newer php executable with a different name, such as php5.\n\n"; + + $longHtml = <<<HTML 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. @@ -134,24 +169,31 @@ function wfPHPVersionError( $type ) { of MediaWiki from our website. See our <a href="https://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a> for details of which versions are compatible with prior versions of PHP. - </p> - <h2>External dependencies</h2> - <p> +HTML; + wfGenericError( $type, $mwVersion, 'Supported PHP versions', $shortText, $longText, $longHtml ); +} + +/** + * Display an error for the vendor/autoload.php file not being found. + * + * @param string $type See wfGenericError + * @param string $mwVersion See wfGenericError + */ +function wfMissingVendorError( $type, $mwVersion ) { + $shortText = "Installing some external dependencies (e.g. via composer) is required."; + + $longText = "Error: You are missing some external dependencies. \n" + . "MediaWiki now also has some external dependencies that need to be installed\n" + . "via composer or from a separate git repo. Please see\n" + . "https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n" + . "for help on installing the required components."; + + $longHtml = <<<HTML MediaWiki now also has some external dependencies that need to be installed via composer or from a separate git repo. Please see <a href="https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries">mediawiki.org</a> for help on installing the required components. - </p> - </div> - </body> -</html> HTML; - // Handle everything that's not index.php - } else { - // So nothing thinks this is JS or CSS - $finalOutput = ( $type == 'load.php' ) ? "/* $message */" : $message; - header( "$protocol 500 MediaWiki configuration Error" ); - } - echo "$finalOutput\n"; - die( 1 ); + + wfGenericError( $type, $mwVersion, 'External dependencies', $shortText, $longText, $longHtml ); } |