summaryrefslogtreecommitdiff
path: root/includes/PHPVersionCheck.php
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-05-01 15:32:59 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-05-01 15:32:59 -0400
commit6dc1997577fab2c366781fd7048144935afa0012 (patch)
tree8918d28c7ab4342f0738985e37af1dfc42d0e93a /includes/PHPVersionCheck.php
parent150f94f051128f367bc89f6b7e5f57eb2a69fc62 (diff)
parentfa89acd685cb09cdbe1c64cbb721ec64975bbbc1 (diff)
Merge commit 'fa89acd'
# Conflicts: # .gitignore # extensions/ArchInterWiki.sql
Diffstat (limited to 'includes/PHPVersionCheck.php')
-rw-r--r--includes/PHPVersionCheck.php146
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 );
}