Symfony2中用户友好的错误页
每当我在第143行的/var/www/…Controller.php中遇到类似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代码永远没
致命错误:对非对象调用成员函数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环境。