diff --git a/phpBB/config/default/container/services_event.yml b/phpBB/config/default/container/services_event.yml index 8a55b933ac..5696275e64 100644 --- a/phpBB/config/default/container/services_event.yml +++ b/phpBB/config/default/container/services_event.yml @@ -9,6 +9,7 @@ services: arguments: - '@template' - '@language' + - '%debug.exceptions%' tags: - { name: kernel.event_subscriber } diff --git a/phpBB/language/en/common.php b/phpBB/language/en/common.php index af9f8fe187..d7a1ce8e71 100644 --- a/phpBB/language/en/common.php +++ b/phpBB/language/en/common.php @@ -556,6 +556,7 @@ $lang = array_merge($lang, array( ), 'OPTIONS' => 'Options', + 'PAGE_NOT_FOUND' => 'The requested page could not be found.', 'PAGE_OF' => 'Page %1$d of %2$d', 'PAGE_TITLE_NUMBER' => 'Page %s', 'PASSWORD' => 'Password', diff --git a/phpBB/phpbb/event/kernel_exception_subscriber.php b/phpBB/phpbb/event/kernel_exception_subscriber.php index b7a54f2608..373e59b0c8 100644 --- a/phpBB/phpbb/event/kernel_exception_subscriber.php +++ b/phpBB/phpbb/event/kernel_exception_subscriber.php @@ -16,12 +16,20 @@ namespace phpbb\event; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; use Symfony\Component\HttpFoundation\Response; class kernel_exception_subscriber implements EventSubscriberInterface { + /** + * Set to true to show full exception messages + * + * @var bool + */ + protected $debug; + /** * Template object * @@ -44,9 +52,11 @@ class kernel_exception_subscriber implements EventSubscriberInterface * * @param \phpbb\template\template $template Template object * @param \phpbb\language\language $language Language object + * @param bool $debug Set to true to show full exception messages */ - public function __construct(\phpbb\template\template $template, \phpbb\language\language $language) + public function __construct(\phpbb\template\template $template, \phpbb\language\language $language, $debug = false) { + $this->debug = $debug || defined('DEBUG'); $this->template = $template; $this->language = $language; $this->type_caster = new \phpbb\request\type_cast_helper(); @@ -69,6 +79,10 @@ class kernel_exception_subscriber implements EventSubscriberInterface { $message = $this->language->lang_array($message, $exception->get_parameters()); } + else if (!$this->debug && $exception instanceof NotFoundHttpException) + { + $message = $this->language->lang('PAGE_NOT_FOUND'); + } // Show text in bold $message = preg_replace('#<(/?strong)>#i', '<$1>', $message); @@ -99,7 +113,7 @@ class kernel_exception_subscriber implements EventSubscriberInterface $data['message'] = $message; } - if (defined('DEBUG')) + if ($this->debug) { $data['trace'] = $exception->getTrace(); }