我知道这是一个很大的NO NO ...并且在我的网站上线时不应该显示开发人员错误页面,我该怎么做才能确保dev环境错误消息没有出现在生产中?
为什么会出现这些?我认为在生产模式下默认关闭它?我错过了一个场景吗?
注意:这是在共享服务器上。我正在使用app.php而不是app_dev.php。
当我在本地进入生产模式时,它会正确显示正确的错误消息(如下所示):
哎呀!发生错误 服务器返回" 404 Not Found"。 有些东西坏了。请发送电子邮件至[email],告诉我们发生此错误时您在做什么。我们会尽快修复它。很抱歉给您带来不便。
然而在实际网站上,它显示了Symfony2 dev环境错误消息?
我尝试通过在app / Resource / TwigBundle / views / Exception 中创建error404.html.twig文件来制作自定义错误消息,但它仍然没有加载此文件,只显示开发人员错误消息。
答案 0 :(得分:15)
在您的前端控制器(Symfony标准版中的web/app.php
)中,创建了AppKernel
的实例。 AppKernel
继承constructor from Symfony's Kernel
,这需要两个参数:
/**
* Constructor.
*
* @param string $environment The environment
* @param bool $debug Whether to enable debugging or not
*/
public function __construct($environment, $debug)
$environment
参数仅确定使用的配置(config_dev.yml
,config_prod.yml
等)。 $debug
参数是启用或禁用调试的参数(因此确定是否显示更少的异常)。
所以在app.php
中,更改:
$kernel = new AppKernel('prod', true);
到
$kernel = new AppKernel('prod', false);
这应该用用户友好的错误页面替换详细的异常页面。