From c650e5c1e31e23bd80d26fb3bc45f3f2c1bb52d3 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" <alexander.klimov@icinga.com> Date: Fri, 19 Jan 2018 11:39:22 +0100 Subject: [PATCH] /error/error: show the whole exception chain --- application/controllers/ErrorController.php | 17 +++++++++++++++-- application/views/scripts/error/error.phtml | 18 +++++++++++++----- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/application/controllers/ErrorController.php b/application/controllers/ErrorController.php index 07bb5dff4..684758348 100644 --- a/application/controllers/ErrorController.php +++ b/application/controllers/ErrorController.php @@ -86,9 +86,22 @@ class ErrorController extends ActionController Logger::error("%s\n%s", $exception, $exception->getTraceAsString()); break; } - $this->view->message = $exception->getMessage(); + + $this->view->messages = array(); + if ($this->getInvokeArg('displayExceptions')) { - $this->view->stackTrace = $exception->getTraceAsString(); + $this->view->stackTraces = array(); + + do { + $this->view->messages[] = $exception->getMessage(); + $this->view->stackTraces[] = $exception->getTraceAsString(); + $exception = $exception->getPrevious(); + } while ($exception !== null); + } else { + do { + $this->view->messages[] = $exception->getMessage(); + $exception = $exception->getPrevious(); + } while ($exception !== null); } break; diff --git a/application/views/scripts/error/error.phtml b/application/views/scripts/error/error.phtml index 1e0c29b0e..2dd87ee34 100644 --- a/application/views/scripts/error/error.phtml +++ b/application/views/scripts/error/error.phtml @@ -4,9 +4,17 @@ </div> <?php endif ?> <div class="content"> - <p tabindex="-1" class="autofocus error-message"><?= nl2br($this->escape($message)) ?></p> -<?php if (isset($stackTrace)): ?> - <hr> - <pre><?= $this->escape($stackTrace) ?></pre> -<?php endif ?> +<?php +if (isset($stackTraces)) { + foreach ($messages as $i => $message) { + echo '<p tabindex="-1" class="autofocus error-message">' . nl2br($this->escape($message)) . '</p>' + . '<hr>' + . '<pre>' . $this->escape($stackTraces[$i]) . '</pre>'; + } +} else { + foreach ($messages as $message) { + echo '<p tabindex="-1" class="autofocus error-message">' . nl2br($this->escape($message)) . '</p>'; + } +} +?> </div>