【问题标题】:Symfony2: prod not found 404 = 200?Symfony2:未找到产品 404 = 200?
【发布时间】:2013-11-30 02:58:36
【问题描述】:

在 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 

我越是试图理解这一点,我就越感到困惑。文档说将呈现app\Resources\TwigBundle\views\Exception 中的简单error404.html.twig。 (是的,我已经清除了产品缓存 - 多次!产品日志中没有条目。)文档是否错误,我真的需要创建一个异常处理程序来显示这个 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".

【问题讨论】:

  • 异常信息是什么?
  • @WouterJ:我已经编辑以显示上面的完整异常消息。这是回应。
  • 好像是资源(文件)无法加载,而不是找不到路由。
  • @WouterJ:我想我把资源和未找到的路线混淆了。内部(我的代码)请求与外部(用户添加)URI 请求的区别是什么?

标签: php symfony


【解决方案1】:

不是很明显,错误是由于错误的 error404.html.twig 文件造成的。一旦纠正它就会变得有用。道歉。

【讨论】:

  • 你是怎么改正的,我也有同样的问题,Soft 404返回200!
  • @Sekai:对不起,我不记得细节了。最好我可以重建我在...app\Resources 中有一个TwigBundle\views\Exception 目录。在其中我需要有一个正确配置的模板文件;我不记得 error404 模板出了什么问题。如果这不符合您的环境,我将无法解释您的问题。
  • 无需道歉,即使我有 Symfony 的所有经验,这个答案实际上也很有帮助;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-28
  • 2016-02-29
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多