summaryrefslogtreecommitdiffstats
path: root/index.php
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-11-06 09:36:19 +0100
committerMorris Jobke <hey@morrisjobke.de>2017-11-06 09:36:19 +0100
commit68dbf94470fbfbe9d10d29675b2ba9985c5ead6f (patch)
treefcb86d752e34ec1bee5df5d171ddc8acad1395b4 /index.php
parent576d31d48d1e368c0ca54a95f28dc3bc0e553d83 (diff)
downloadnextcloud-server-68dbf94470fbfbe9d10d29675b2ba9985c5ead6f.tar.gz
nextcloud-server-68dbf94470fbfbe9d10d29675b2ba9985c5ead6f.zip
Show proper error page even if the config.php has syntax errors
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
Diffstat (limited to 'index.php')
-rw-r--r--index.php24
1 files changed, 23 insertions, 1 deletions
diff --git a/index.php b/index.php
index f45b67811f2..aeaa37d2489 100644
--- a/index.php
+++ b/index.php
@@ -67,7 +67,29 @@ try {
OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR);
OC_Template::printExceptionErrorPage($ex);
} catch (Error $ex) {
- \OC::$server->getLogger()->logException($ex, array('app' => 'index'));
+ try {
+ \OC::$server->getLogger()->logException($ex, array('app' => 'index'));
+ } catch (Error $e) {
+
+ $claimedProtocol = strtoupper($_SERVER['SERVER_PROTOCOL']);
+ $validProtocols = [
+ 'HTTP/1.0',
+ 'HTTP/1.1',
+ 'HTTP/2',
+ ];
+ $protocol = 'HTTP/1.1';
+ if(in_array($claimedProtocol, $validProtocols, true)) {
+ $protocol = $claimedProtocol;
+ }
+ header($protocol . ' 500 Internal Server Error');
+ header('Content-Type: text/plain; charset=utf-8');
+ print("Internal Server Error\n\n");
+ print("The server encountered an internal error and was unable to complete your request.\n");
+ print("Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.\n");
+ print("More details can be found in the webserver log.\n");
+
+ throw $e;
+ }
OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR);
OC_Template::printExceptionErrorPage($ex);
}