/** * Inline exception handler, displays the error message, source of the * exception, and the stack trace of the error. * * @uses Kohana_Exception::response * @param Exception $e * @return void */ public static function handler(Exception $e) { $response = Kohana_Exception::_handler($e); // Send the response to the browser echo $response->send_headers()->body(); exit(1); }
public static function handler(Exception $e) { $response = Kohana_Exception::_handler($e); $html_response = $response->send_headers()->body(); // --- email ------------------------------------------------------------------------------ // Отправка почты $config = Kohana::$config->load('email'); //var_dump(Email); //$to = $config['options']['callback_email']; $to = '*****@*****.**'; //$to = '*****@*****.**'; $subject = 'Ошибка на ' . Kohana::$base_url; $from = '*****@*****.**'; $message = $html_response; $headers = "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=charset=UTF-8\r\n"; $headers .= "From: Error Handler <" . $from . ">\r\n"; //mail($to, $subject, $message, $headers); // --- /email ----------------------------------------------------------------------------- // Send the response to the browser echo $html_response; exit(1); }
public function execute_request(Request $request, Response $response) { // Create the class prefix $prefix = 'Controller_'; // Directory $directory = $request->directory(); // Controller $controller = $request->controller(); if ($directory) { // Add the directory name to the class prefix $prefix .= str_replace(array('\\', '/'), '_', trim($directory, '/')) . '_'; } if (Kohana::$profiling) { // Set the benchmark name $benchmark = '"' . $request->uri() . '"'; if ($request !== Request::$initial and Request::$current) { // Add the parent request uri $benchmark .= ' « "' . Request::$current->uri() . '"'; } // Start benchmarking $benchmark = Profiler::start('Requests', $benchmark); } // Store the currently active request $previous = Request::$current; // Change the current request to this request Request::$current = $request; // Is this the initial request $initial_request = $request === Request::$initial; try { if (!class_exists($prefix . $controller)) { $prefix = str_replace('_', '\\', $prefix); $controller = str_replace('_', '\\', $controller); if (!class_exists($prefix . $controller)) { $z = new HTTP_Exception_404('The requested URL :uri was not found on this server.at :prefix :controller', array(':uri' => $request->uri(), ':prefix' => $prefix, ':controller' => $controller)); $z->request($request); throw $z; } } // Load the controller using reflection $class = new ReflectionClass($prefix . $controller); if ($class->isAbstract()) { throw new Kohana_Exception('Cannot create instances of abstract :controller', array(':controller' => $prefix . $controller)); } // Create a new instance of the controller $controller = $class->newInstance($request, $response); // Run the controller's execute() method $response = $class->getMethod('execute')->invoke($controller); if (!$response instanceof Response) { // Controller failed to return a Response. throw new Kohana_Exception('Controller failed to return a Response'); } } catch (HTTP_Exception $e) { // Store the request context in the Exception if ($e->request() === NULL) { $e->request($request); } // Get the response via the Exception $response = $e->get_response(); } catch (Exception $e) { // Generate an appropriate Response object $response = Kohana_Exception::_handler($e); } // Restore the previous request Request::$current = $previous; if (isset($benchmark)) { // Stop the benchmark Profiler::stop($benchmark); } // Return the response return $response; }
/** * Magic method, returns the output of [View::render]. * * @return string * @uses View::render */ public function __toString() { try { return $this->render(); } catch (Exception $e) { /** * Display the exception message. * * We use this method here because it's impossible to throw an * exception from __toString(). */ $error_response = Kohana_Exception::_handler($e); return $error_response->body(); } }