From: Andrey Kutejko Date: Tue, 20 Jan 2015 14:30:51 +0000 (+0200) Subject: fix error handler related code X-Git-Tag: 0.6~63 X-Git-Url: https://git.andy128k.dev/?a=commitdiff_plain;h=d289e3a59dbf2ca802e22af31dcb613bc2f522af;p=ipf.git fix error handler related code --- diff --git a/ipf/middleware/error.php b/ipf/middleware/error.php index 28fb311..436481f 100644 --- a/ipf/middleware/error.php +++ b/ipf/middleware/error.php @@ -4,7 +4,7 @@ class IPF_Error_Middleware extends IPF_Middleware { function call($request) { - $previous = set_error_handler(array($this, 'error_handler')); + $this->previous_error_handler = set_error_handler(array($this, 'error_handler')); register_shutdown_function(array($this, 'shutdown_handler'), $request); try { if (!$this->next) @@ -18,7 +18,10 @@ class IPF_Error_Middleware extends IPF_Middleware error_log($exception); $response = new IPF_HTTP_Response_ServerError($request, $exception); } - set_error_handler($previous); + if ($this->previous_error_handler) + set_error_handler($previous); + else + restore_error_handler(); return $response; } @@ -26,6 +29,9 @@ class IPF_Error_Middleware extends IPF_Middleware { if (error_reporting() & $errno) throw new \ErrorException($errstr, 0, $errno, $errfile, $errline); + + if ($this->previous_error_handler) + call_user_func($this->previous_error_handler, $errno, $errstr, $errfile, $errline); } function shutdown_handler($request)