-/**
- * Display something vaguely comprehensible in the event of a totally unrecoverable error.
- * Does not assume access to *anything*; no globals, no autoloader, 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 string $type Which entry point we are protecting. One of:
- * - index.php
- * - load.php
- * - api.php
- * - mw-config/index.php
- * - cli
- * @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 wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $longHtml ) {
- $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
+ /**
+ * Displays an error, if the installed php version does not meet the minimum requirement.
+ *
+ * @return $this
+ */
+ function checkRequiredPHPVersion() {
+ if ( !function_exists( 'version_compare' )
+ || version_compare( $this->getPHPImplVersion(), $this->minimumVersionPHP ) < 0
+ ) {
+ $shortText = "MediaWiki $this->mwVersion requires at least PHP version"
+ . " $this->minimumVersionPHP, you are using PHP {$this->getPHPImplVersion()}.";
+
+ $longText = "Error: You might be using on older PHP version. \n"
+ . "MediaWiki $this->mwVersion needs PHP $this->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.5.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="https://www.mediawiki.org/wiki/Download">download</a> an older version
+ 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.
+HTML;
+ $this->triggerError( 'Supported PHP versions', $shortText, $longText, $longHtml );
+ }
+ }
+
+ /**
+ * Displays an error, if the vendor/autoload.php file could not be found.
+ *
+ * @return $this
+ */
+ function checkVendorExistence() {
+ if ( !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' ) ) {
+ $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.
+HTML;
+
+ $this->triggerError( 'External dependencies', $shortText, $longText, $longHtml );
+ }
+ }
+
+ /**
+ * Displays an error, if a PHP extension does not exist.
+ *
+ * @return $this
+ */
+ function checkExtensionExistence() {
+ $missingExtensions = array();
+ foreach ( $this->functionsExtensionsMapping as $function => $extension ) {
+ if ( !function_exists( $function ) ) {
+ $missingExtensions[] = $extension;
+ }
+ }
+
+ if ( $missingExtensions ) {
+ $shortText = "Installing some PHP extensions is required.";
+
+ $missingExtText = '';
+ $missingExtHtml = '';
+ $baseUrl = 'https://secure.php.net';
+ foreach ( $missingExtensions as $ext ) {
+ $missingExtText .= " * $ext <$baseUrl/$ext>\n";
+ $missingExtHtml .= "<li><b>$ext</b> "
+ . "(<a href=\"$baseUrl/$ext\">more information</a>)</li>";
+ }
+
+ $cliText = "Error: Missing one or more required components of PHP.\n"
+ . "You are missing a required extension to PHP that MediaWiki needs.\n"
+ . "Please install:\n" . $missingExtText;
+
+ $longHtml = <<<HTML
+ You are missing a required extension to PHP that MediaWiki
+ requires to run. Please install:
+ <ul>
+ $missingExtHtml
+ </ul>
+HTML;
+
+ $this->triggerError( 'Required components', $shortText, $cliText, $longHtml );
+ }
+ }
+
+ /**
+ * Output headers that prevents error pages to be cached.
+ */
+ function outputHTMLHeader() {
+ $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';