summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/base.php1
-rw-r--r--lib/private/session/internal.php8
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/base.php b/lib/base.php
index 00117918c87..da4b3a47c75 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 8fda6b3b3ee..acd93630f40 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');
}