diff --git a/index.php b/index.php
index a3e1ff57192c08acdc08e57ee51e60c7e7101227..abe30d48aba55a1db3d1bf6d75b50ec0c0b4d626 100644
--- a/index.php
+++ b/index.php
@@ -70,7 +70,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);
 }