|
@@ -86,14 +86,23 @@
|
|
|
if(count(ob_list_handlers())){
|
|
|
ob_end_clean();
|
|
|
}
|
|
|
- foreach(static::$apps as $k => $app){
|
|
|
- if(is_null($app->request)){
|
|
|
- $app->request = new Request(Request::get_verb(), Request::get_url(), Request::get_headers(), Request::get_body());
|
|
|
+ if(count(static::$apps)){
|
|
|
+ foreach(static::$apps as $k => $app){
|
|
|
+ if(is_null($app->request)){
|
|
|
+ $app->request = new Request(Request::get_verb(), Request::get_url(), Request::get_headers(), Request::get_body());
|
|
|
+ }
|
|
|
+ $app->response->open(true);
|
|
|
+ $app->onerror($app->request, $app->response, $error);
|
|
|
+ $app->response->shutdown();
|
|
|
}
|
|
|
- $app->response->open(true);
|
|
|
- $app->onerror($app->request, $app->response, $error);
|
|
|
- $app->response->shutdown();
|
|
|
+ }else{
|
|
|
+ $res =new Response();
|
|
|
+ $res->code(500)
|
|
|
+ ->header('Content-Type', 'text/plain')
|
|
|
+ ->write(print_r($error, true))
|
|
|
+ ->shutdown();
|
|
|
}
|
|
|
+ flush();
|
|
|
if(is_callable('parent::__destruct')){
|
|
|
parent::__destruct();
|
|
|
}
|
|
@@ -205,7 +214,7 @@
|
|
|
$fn($req, $res, $error);
|
|
|
}
|
|
|
}catch(Exception $e){
|
|
|
- die($e);
|
|
|
+ die("Error handlers failed {$e}");
|
|
|
}
|
|
|
}
|
|
|
public function locale(string $domain, string $folder, string $codeset = 'UTF-8'){
|
|
@@ -215,17 +224,18 @@
|
|
|
return $this;
|
|
|
}
|
|
|
}
|
|
|
+ set_exception_handler(function($error){
|
|
|
+ App::shutdown_error($error);
|
|
|
+ });
|
|
|
set_error_handler(function($errno, $errstr, $errfile, $errline){
|
|
|
- App::shutdown_error(new App\Exception($errstr, $errno, null, $errfile, $errline, debug_backtrace()));
|
|
|
- }, E_ALL);
|
|
|
+ App::shutdown_error(App\Exception($errstr, $errno, null, $errfile, $errline, debug_backtrace()));
|
|
|
+ }, E_ALL & ~E_WARNING);
|
|
|
register_shutdown_function(function(){
|
|
|
- error_reporting(E_ALL);
|
|
|
+ error_reporting(E_ALL & ~E_WARNING);
|
|
|
ini_set('display_errors', 'On');
|
|
|
- try{
|
|
|
- App::shutdown();
|
|
|
- }catch(Exception $error){
|
|
|
- App::shutdown_error(new App\Exception($error->getMessage(), $error->getCode(), $error, $error->getFile(), $error->getLine(), $error->getTrace()));
|
|
|
- }
|
|
|
+ App::shutdown();
|
|
|
});
|
|
|
+ error_reporting(E_ALL & ~E_WARNING);
|
|
|
+ ini_set('display_errors', 'On');
|
|
|
gc_enable();
|
|
|
?>
|