Ik gebruik voor mijn website Symfony2 en nu ben ik erachter gekomen dat als ik een pagina open die niet bestaat, deze een 500 error geeft ipv een 404, waarnaast ook nog mijn template niet wordt weergegeven.
Ik heb gedebugd en ben erachter gekomen dat mijn Twig template het niet correct doet. Ik extend '::layout.html.twig', maar dit doet het dus niet. Als ik dit weghaal en alleen HTML laat staan, doet hij het wel. Hoe kan dit?
Het vreemde is ook nog dat er niks in app/logs/prod.log, maar alles als een uncaught exception naar de apache2 error log wordt gelogt, met een "Uncaught exception 'Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException'".
Dit is mijn template die het niet doet:
{% extends '::layout.html.twig' %}
{% block title %}Pagina niet gevonden{% endblock %}
{% block content %}
<div class="hero-unit">
<h1>Niet gevonden :(</h1>
<p>Sorry, maar de pagina die je probeerde te bereiken, is niet gevonden</p>
</div>
{% endblock %}
En deze doet het wel:
<div class="hero-unit">
<h1>Niet gevonden :(</h1>
<p>Sorry, maar de pagina die je probeerde te bereiken, is niet gevonden</p>
</div>
Dit is op een productie server, dus als front controller wordt app.php gebruikt. Ik heb er niks aan gewijzigd behalve dat hij APC gebruikt. De default controller voor errors is Symfony\Bundle\TwigBundle\Controller\ExceptionController en deze roept het template TwigBundle:Exception:error404.html.twig aan, die ik heb overriden in app/Resources/TwigBundle/views/Exception/error.html.twig.
Ik weet zeker dat ::layout.html.twig bestaat, want die gebruik ik ook in al mijn andere templates.
Dit is de hele stack trace:
PHP Fatal error: Uncaught exception 'Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException' in /var/www/beta.hetgoeselyceum.nl/app/cache/prod/appProdUrlMatcher.php:917\nStack trace:\n#0 /var/www/beta.hetgoeselyceum.nl/app/cache/prod/classes.php(1195): appProdUrlMatcher->match('/asdgsdg')\n#1 /var/www/beta.hetgoeselyceum.nl/app/cache/prod/classes.php(1860): Symfony\\Component\\Routing\\Router->match('/asdgsdg')\n#2 [internal function]: Symfony\\Component\\HttpKernel\\EventListener\\RouterListener->onKernelRequest(Object(Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent))\n#3 /var/www/beta.hetgoeselyceum.nl/app/cache/prod/classes.php(1655): call_user_func(Array, Object(Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent))\n#4 /var/www/beta.hetgoeselyceum.nl/app/cache/prod/classes.php(1588): Symfony\\Component\\EventDispatcher\\EventDispatcher->doDispatch(Array, 'kernel.request', Object(Symfony\\Component\\HttpKernel\\Event\\GetResponseEvent))\n#5 /var/www/beta.hetgoeselyceum.nl/app/cache/prod/classes.php(1752): Symfony\\Component\\EventDisp in /var/www/beta.hetgoeselyceum.nl/app/cache/prod/classes.php on line 1871