Merge pull request #15062 from owncloud/fix-15053-master
Handle session initialization errors and display error page
This commit is contained in:
commit
0b1c4bfc3b
|
@ -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);
|
||||
|
|
|
@ -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,6 +84,10 @@ class Internal extends Session {
|
|||
throw new \Exception('The session cannot be reopened - reopen() is ony to be used in unit testing.');
|
||||
}
|
||||
|
||||
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');
|
||||
|
|
Loading…
Reference in New Issue