Symfony2:未找到产品404 = 200?

时间:2013-11-16 19:23:58

标签: php symfony

在prod环境中,当请求不存在的URI(例如,... / green)时,我希望呈现自定义404错误页面。响应标头是

Date: Sat, 16 Nov 2013 19:11:55 GMT
Server: Apache/2.4.4 (Win32) PHP/5.4.8
X-Powered-By: PHP/5.4.16
Content-Length: 2455
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

200 OK

,回复是

Fatal error: Uncaught exception 'Symfony\Component\Routing\Exception\ResourceNotFoundException' in G:\Documents\workspace\sym\app\cache\prod\classes.php on line 1883 Symfony\Component\Routing\Exception\ResourceNotFoundException: in G:\Documents\workspace\sym\app\cache\prod\appProdUrlMatcher.php on line 1682 Call Stack: 0.0000 130880 1. {main}() G:\Documents\workspace\sym\web\app.php:0 0.0200 340984 2. Symfony\Component\HttpKernel\Kernel->handle() G:\Documents\workspace\sym\web\app.php:21 0.1800 2659792 3. Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle() G:\Documents\workspace\sym\app\bootstrap.php.cache:2249 0.1800 2661000 4. Symfony\Component\HttpKernel\HttpKernel->handle() G:\Documents\workspace\sym\app\bootstrap.php.cache:2947 0.1800 2661032 5. Symfony\Component\HttpKernel\HttpKernel->handleRaw() G:\Documents\workspace\sym\app\bootstrap.php.cache:2818 0.1800 2661576 6. Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() G:\Documents\workspace\sym\app\bootstrap.php.cache:2833 0.4900 4232624 7. Symfony\Component\EventDispatcher\EventDispatcher->dispatch() G:\Documents\workspace\sym\app\cache\prod\classes.php:1764 0.4900 4233384 8. Symfony\Component\EventDispatcher\EventDispatcher->doDispatch() G:\Documents\workspace\sym\app\cache\prod\classes.php:1600 0.4900 4234080 9. call_user_func() G:\Documents\workspace\sym\app\cache\prod\classes.php:1667 0.4900 4234096 10. Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest() G:\Documents\workspace\sym\app\cache\prod\classes.php:1667 0.4900 4234360 11. Symfony\Component\Routing\Router->match() G:\Documents\workspace\sym\app\cache\prod\classes.php:1872 0.4900 4238400 12. appProdUrlMatcher->match() G:\Documents\workspace\sym\app\cache\prod\classes.php:1207 Symfony\Component\HttpKernel\Exception\NotFoundHttpException: No route found for "GET /green" in G:\Documents\workspace\sym\app\cache\prod\classes.php on line 1883 Call Stack: 0.0000 130880 1. {main}() G:\Documents\workspace\sym\web\app.php:0 0.0200 340984 2. Symfony\Component\HttpKernel\Kernel->handle() G:\Documents\workspace\sym\web\app.php:21 0.1800 2659792 3. Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel->handle() G:\Documents\workspace\sym\app\bootstrap.php.cache:2249 

我越努力理解这一点就越困惑。文档说明将呈现error404.html.twig中的简单app\Resources\TwigBundle\views\Exception。 (是的,我已经清除了prod缓存 - 多次!prod日志中没有条目。)文档是否错误,我确实需要创建一个异常处理程序只是为了显示这个404页面,因为响应是200?

更新

所以我猜开发环境中的404并不意味着它将成为刺激中的404。然后我尝试了一个简单的异常处理程序来获取自定义错误页面,但之后没有Monolog邮件。尝试将自定义处理程序与Monolog集成会产生以下结果,因为自定义处理程序使用Twig。难怪我的头在旋转。

[Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException] Circular reference detected for service "router", path: "cache_warmer -> router -> monolog.logger.router -> mana.exception.controller -> templating -> twig -> templating.helper.logout_url".

1 个答案:

答案 0 :(得分:2)

不是那么显着,错误是由于error404.html.twig文件不正确造成的。一旦纠正它就变得有用了。道歉。