44 lines
1.6 KiB
PHP
44 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace KupShop\KupShopBundle\Controller;
|
|
|
|
use KupShop\ContentBundle\View\Error500View;
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\DependencyInjection\Attribute\Autowire;
|
|
use Symfony\Component\ErrorHandler\ErrorRenderer\HtmlErrorRenderer;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\RequestStack;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class ExceptionController extends AbstractController
|
|
{
|
|
public function __construct(
|
|
#[Autowire(service: 'error_handler.error_renderer.html')] protected HtmlErrorRenderer $symfonyErrorRenderer,
|
|
) {
|
|
}
|
|
|
|
public function showException(Request $request, RequestStack $requestStack, Error500View $view): Response
|
|
{
|
|
$originalException = $request->attributes->get('exception');
|
|
$sentry_event_id = $requestStack->getMainRequest()->attributes->get('sentry_event_id');
|
|
|
|
if (isSuperuser() || php_sapi_name() == 'cli' || !isProduction()) {
|
|
$error = "{$originalException->getTraceAsString()}
|
|
{$originalException->getFile()}:{$originalException->getLine()} - {$originalException->getMessage()}";
|
|
|
|
return new Response($error, 500);
|
|
}
|
|
|
|
if (!$sentry_event_id) {
|
|
$renderedException = $this->symfonyErrorRenderer->render($originalException);
|
|
|
|
return new Response($renderedException->getAsString(), $renderedException->getStatusCode(), $renderedException->getHeaders());
|
|
}
|
|
|
|
$view->setException($originalException)
|
|
->setSentryEventId($sentry_event_id);
|
|
|
|
return $view->getResponse($request);
|
|
}
|
|
}
|