diff --git a/lib/base.php b/lib/base.php index 00117918c8..da4b3a47c7 100644 --- a/lib/base.php +++ b/lib/base.php @@ -415,6 +415,7 @@ class OC { } // if session cant be started break with http 500 error } catch (Exception $e) { + \OCP\Util::logException('base', $e); //show the user a detailed error page OC_Response::setStatus(OC_Response::STATUS_INTERNAL_SERVER_ERROR); OC_Template::printExceptionErrorPage($e); diff --git a/lib/private/session/internal.php b/lib/private/session/internal.php index 8fda6b3b3e..acd93630f4 100644 --- a/lib/private/session/internal.php +++ b/lib/private/session/internal.php @@ -18,7 +18,9 @@ namespace OC\Session; class Internal extends Session { public function __construct($name) { session_name($name); + set_error_handler(array($this, 'trapError')); session_start(); + restore_error_handler(); if (!isset($_SESSION)) { throw new \Exception('Failed to start session'); } @@ -82,7 +84,11 @@ class Internal extends Session { throw new \Exception('The session cannot be reopened - reopen() is ony to be used in unit testing.'); } - private function validateSession() { + public function trapError($errorNumber, $errorString) { + throw new \ErrorException($errorString); + } + + private function validateSession() { if ($this->sessionClosed) { throw new \Exception('Session has been closed - no further changes to the session as allowed'); }