/** * Run the current MediaWiki instance; index.php just calls this */ public function run() { try { $this->setDBProfilingAgent(); try { $this->main(); } catch (ErrorPageError $e) { // Bug 62091: while exceptions are convenient to bubble up GUI errors, // they are not internal application faults. As with normal requests, this // should commit, print the output, do deferred updates, jobs, and profiling. $this->doPreOutputCommit(); $e->report(); // display the GUI error } } catch (Exception $e) { $context = $this->context; $action = $context->getRequest()->getVal('action', 'view'); if ($e instanceof DBConnectionError && $context->hasTitle() && $context->getTitle()->canExist() && in_array($action, ['view', 'history'], true) && HTMLFileCache::useFileCache($this->context, HTMLFileCache::MODE_OUTAGE)) { // Try to use any (even stale) file during outages... $cache = new HTMLFileCache($context->getTitle(), 'view'); if ($cache->isCached()) { $cache->loadFromFileCache($context, HTMLFileCache::MODE_OUTAGE); print MWExceptionRenderer::getHTML($e); exit; } } MWExceptionHandler::handleException($e); } $this->doPostOutputShutdown('normal'); }