/var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/Error
NameSizeModeActions
Debug/-0755rm
Middleware/-0755rm
BaseErrorHandler.php124330644editdlrm
ConsoleErrorHandler.php35580644editdlrm
Debugger.php373190644editdlrm
ErrorHandler.php74360644editdlrm
ErrorLogger.php48020644editdlrm
ErrorLoggerInterface.php16110644editdlrm
ExceptionRenderer.php141580644editdlrm
ExceptionRendererInterface.php9500644editdlrm
FatalErrorException.php12930644editdlrm
Edit: /var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/Error/ExceptionRenderer.php (14158B)
error = $exception; $this->request = $request; $this->controller = $this->_getController(); } /** * Get the controller instance to handle the exception. * Override this method in subclasses to customize the controller used. * This method returns the built in `ErrorController` normally, or if an error is repeated * a bare controller will be used. * * @return \Cake\Controller\Controller * @triggers Controller.startup $controller */ protected function _getController(): Controller { $request = $this->request; $routerRequest = Router::getRequest(); // Fallback to the request in the router or make a new one from // $_SERVER if ($request === null) { $request = $routerRequest ?: ServerRequestFactory::fromGlobals(); } // If the current request doesn't have routing data, but we // found a request in the router context copy the params over if ($request->getParam('controller') === null && $routerRequest !== null) { $request = $request->withAttribute('params', $routerRequest->getAttribute('params')); } $errorOccured = false; try { $params = $request->getAttribute('params'); $params['controller'] = 'Error'; $factory = new ControllerFactory(); $class = $factory->getControllerClass($request->withAttribute('params', $params)); if (!$class) { /** @var string $class */ $class = App::className('Error', 'Controller', 'Controller'); } /** @var \Cake\Controller\Controller $controller */ $controller = new $class($request); $controller->startupProcess(); } catch (Throwable $e) { $errorOccured = true; } if (!isset($controller)) { return new Controller($request); } // Retry RequestHandler, as another aspect of startupProcess() // could have failed. Ignore any exceptions out of startup, as // there could be userland input data parsers. if ($errorOccured && isset($controller->RequestHandler)) { try { $event = new Event('Controller.startup', $controller); $controller->RequestHandler->startup($event); } catch (Throwable $e) { } } return $controller; } /** * Clear output buffers so error pages display properly. * * @return void */ protected function clearOutput(): void { if (in_array(PHP_SAPI, ['cli', 'phpdbg'])) { return; } while (ob_get_level()) { ob_end_clean(); } } /** * Renders the response for the exception. * * @return \Cake\Http\Response The response to be sent. */ public function render(): ResponseInterface { $exception = $this->error; $code = $this->_code($exception); $method = $this->_method($exception); $template = $this->_template($exception, $method, $code); $this->clearOutput(); if (method_exists($this, $method)) { return $this->_customMethod($method, $exception); } $message = $this->_message($exception, $code); $url = $this->controller->getRequest()->getRequestTarget(); $response = $this->controller->getResponse(); if ($exception instanceof CakeException) { foreach ((array)$exception->responseHeader() as $key => $value) { $response = $response->withHeader($key, $value); } } $response = $response->withStatus($code); $viewVars = [ 'message' => $message, 'url' => h($url), 'error' => $exception, 'code' => $code, ]; $serialize = ['message', 'url', 'code']; $isDebug = Configure::read('debug'); if ($isDebug) { $trace = (array)Debugger::formatTrace($exception->getTrace(), [ 'format' => 'array', 'args' => false, ]); $origin = [ 'file' => $exception->getFile() ?: 'null', 'line' => $exception->getLine() ?: 'null', ]; // Traces don't include the origin file/line. array_unshift($trace, $origin); $viewVars['trace'] = $trace; $viewVars += $origin; $serialize[] = 'file'; $serialize[] = 'line'; } $this->controller->set($viewVars); $this->controller->viewBuilder()->setOption('serialize', $serialize); if ($exception instanceof CakeException && $isDebug) { $this->controller->set($exception->getAttributes()); } $this->controller->setResponse($response); return $this->_outputMessage($template); } /** * Render a custom error method/template. * * @param string $method The method name to invoke. * @param \Throwable $exception The exception to render. * @return \Cake\Http\Response The response to send. */ protected function _customMethod(string $method, Throwable $exception): Response { $result = $this->{$method}($exception); $this->_shutdown(); if (is_string($result)) { $result = $this->controller->getResponse()->withStringBody($result); } return $result; } /** * Get method name * * @param \Throwable $exception Exception instance. * @return string */ protected function _method(Throwable $exception): string { [, $baseClass] = namespaceSplit(get_class($exception)); if (substr($baseClass, -9) === 'Exception') { $baseClass = substr($baseClass, 0, -9); } $method = Inflector::variable($baseClass) ?: 'error500'; return $this->method = $method; } /** * Get error message. * * @param \Throwable $exception Exception. * @param int $code Error code. * @return string Error message */ protected function _message(Throwable $exception, int $code): string { $message = $exception->getMessage(); if ( !Configure::read('debug') && !($exception instanceof HttpException) ) { if ($code < 500) { $message = __d('cake', 'Not Found'); } else { $message = __d('cake', 'An Internal Error Has Occurred.'); } } return $message; } /** * Get template for rendering exception info. * * @param \Throwable $exception Exception instance. * @param string $method Method name. * @param int $code Error code. * @return string Template name */ protected function _template(Throwable $exception, string $method, int $code): string { $isHttpException = $exception instanceof HttpException; if (!Configure::read('debug') && !$isHttpException || $isHttpException) { $template = 'error500'; if ($code < 500) { $template = 'error400'; } return $this->template = $template; } $template = $method ?: 'error500'; if ($exception instanceof PDOException) { $template = 'pdo_error'; } return $this->template = $template; } /** * Get HTTP status code. * * @param \Throwable $exception Exception. * @return int A valid HTTP error status code. */ protected function _code(Throwable $exception): int { $code = 500; $errorCode = (int)$exception->getCode(); if ($errorCode >= 400 && $errorCode < 600) { $code = $errorCode; } return $code; } /** * Generate the response using the controller object. * * @param string $template The template to render. * @return \Cake\Http\Response A response object that can be sent. */ protected function _outputMessage(string $template): Response { try { $this->controller->render($template); return $this->_shutdown(); } catch (MissingTemplateException $e) { $attributes = $e->getAttributes(); if ( $e instanceof MissingLayoutException || ( isset($attributes['file']) && strpos($attributes['file'], 'error500') !== false ) ) { return $this->_outputMessageSafe('error500'); } return $this->_outputMessage('error500'); } catch (MissingPluginException $e) { $attributes = $e->getAttributes(); if (isset($attributes['plugin']) && $attributes['plugin'] === $this->controller->getPlugin()) { $this->controller->setPlugin(null); } return $this->_outputMessageSafe('error500'); } catch (Throwable $e) { return $this->_outputMessageSafe('error500'); } } /** * A safer way to render error messages, replaces all helpers, with basics * and doesn't call component methods. * * @param string $template The template to render. * @return \Cake\Http\Response A response object that can be sent. */ protected function _outputMessageSafe(string $template): Response { $builder = $this->controller->viewBuilder(); $builder ->setHelpers([], false) ->setLayoutPath('') ->setTemplatePath('Error'); $view = $this->controller->createView('View'); $response = $this->controller->getResponse() ->withType('html') ->withStringBody($view->render($template, 'error')); $this->controller->setResponse($response); return $response; } /** * Run the shutdown events. * * Triggers the afterFilter and afterDispatch events. * * @return \Cake\Http\Response The response to serve. */ protected function _shutdown(): Response { $this->controller->dispatchEvent('Controller.shutdown'); return $this->controller->getResponse(); } /** * Returns an array that can be used to describe the internal state of this * object. * * @return array */ public function __debugInfo(): array { return [ 'error' => $this->error, 'request' => $this->request, 'controller' => $this->controller, 'template' => $this->template, 'method' => $this->method, ]; } }