Rework PHP and vendor check
* separate warnings for PHP version and vendor * new wfGenericError() function * minimum PHP version in a single place Bug: T102094 Change-Id: I7ae0369e4bab279d5e1bc754fe1a0bc8543bb2ed
This commit is contained in:
parent
0de09ffac9
commit
b3f9120af5
1 changed files with 94 additions and 52 deletions
|
|
@ -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.26';
|
||||
$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 also 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 );
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue