Symfony2中用户友好的错误页

Symfony2中用户友好的错误页,symfony,exception-handling,Symfony,Exception Handling,每当我在第143行的/var/www/…Controller.php中遇到类似致命错误:对非对象调用成员函数getName()的错误时,我的symfony2应用程序在prod环境中显示一个空白页。上面的消息在dev环境中可用。我想在prod环境中显示此类错误的自定义页面。如何在Symfony2中实现它 更新: 可以kernel.event\u listener帮助我吗?您不能在symfony中真正实现这一点。致命错误不是由symfony处理的,而是由PHP扩展本身处理的。Symfony代码永远没

每当我在第143行的/var/www/…Controller.php中遇到类似
致命错误:对非对象调用成员函数getName()的错误时,我的symfony2应用程序在prod环境中显示一个空白页。上面的消息在dev环境中可用。我想在prod环境中显示此类错误的自定义页面。如何在Symfony2中实现它

更新:
可以
kernel.event\u listener
帮助我吗?

您不能在symfony中真正实现这一点。致命错误不是由symfony处理的,而是由PHP扩展本身处理的。Symfony代码永远没有机会完成执行,因为致命错误让php自己的设备来处理错误。PHP错误处理由设置,错误处理程序由设置。在开发环境中,设置为E_ALL以显示所有错误。在生产环境中,错误和调试消息设置为0,并且出于美观和安全原因而不显示(某些错误消息可能显示密码等)。最好的建议是在部署到生产环境之前修复所有致命错误。要捕获并显示致命错误的自定义页面,必须使用php设置错误处理-


对于非致命错误,您可以创建一个可显示的自定义错误页面视图-

您无法在symfony中真正实现这一点。致命错误不是由symfony处理的,而是由PHP扩展本身处理的。Symfony代码永远没有机会完成执行,因为致命错误让php自己的设备来处理错误。PHP错误处理由设置,错误处理程序由设置。在开发环境中,设置为E_ALL以显示所有错误。在生产环境中,错误和调试消息设置为0,并且出于美观和安全原因而不显示(某些错误消息可能显示密码等)。最好的建议是在部署到生产环境之前修复所有致命错误。要捕获并显示致命错误的自定义页面,必须使用php设置错误处理-

对于非致命错误,您可以创建一个可显示的自定义错误页面视图-

我这样做:

class ErrorExceptionHandler { function __construct() { register_shutdown_function(array($this, 'fatalErrorHandler')); } function fatalErrorHandler() { $error = error_get_last(); if ($error['type'] === E_ERROR) { header('Location: /error-page-url'); } } } ErrorExceptionHandler(); // add to app.php 类ErrorExceptionHandler{ 函数_u构造(){ 注册函数(数组($this,'fatalErrorHandler'); } 函数fatalErrorHandler(){ $error=error_get_last(); 如果($error['type']==E_error){ 标题('位置:/error page url'); } } } ErrorExceptionHandler();//添加到app.php 当然,请记住名称空间等。我是这样做的:

class ErrorExceptionHandler { function __construct() { register_shutdown_function(array($this, 'fatalErrorHandler')); } function fatalErrorHandler() { $error = error_get_last(); if ($error['type'] === E_ERROR) { header('Location: /error-page-url'); } } } ErrorExceptionHandler(); // add to app.php 类ErrorExceptionHandler{ 函数_u构造(){ 注册函数(数组($this,'fatalErrorHandler'); } 函数fatalErrorHandler(){ $error=error_get_last(); 如果($error['type']==E_error){ 标题('位置:/error page url'); } } } ErrorExceptionHandler();//添加到app.php
当然,请记住名称空间等。

您可以创建一个“为什么要这样做?”?在应用程序崩溃的生产环境中,向用户显示这是一种安全风险?因此,您只能在dev中看到它mode@RezaSanaie现在它显示一个空白页。我想显示一些消息,如“出现了问题,请稍后再试”。如果出现这样的错误
致命错误:调用成员函数getName
,您的代码似乎还没有准备好生产,您应该使用开发环境。您可以创建一个“为什么要这样做?”?在应用程序崩溃的生产环境中,向用户显示这是一种安全风险?因此,您只能在dev中看到它mode@RezaSanaie现在它显示一个空白页。我想显示一些消息,如“出现问题,请稍后再试”。如果您遇到此类错误
致命错误:调用成员函数getName
,您的代码似乎还没有准备好生产,您应该使用dev环境。