Hor*_*rse 5 php mysql error-handling fatal-error
处理前端网站错误的最佳方法是什么?类似于twitter,reddit等,有一个很好的'出错了'页面.我想要:
理想情况下,任何阻止用户查看网站的内容,如致命错误,自定义异常,mysql停机,随机500错误等,都应显示自定义错误页面.
PHP:自定义错误处理程序 - 处理解析和致命错误 - 工作正常,但如果这发生在脚本的末尾,并且它已经输出了一些东西,这将不起作用
http://davidwalsh.name/custom-error-handling-php
理想情况下需要涵盖从简单查询错误到服务器不存在的所有内容.想象一下它就像检测我的数据库类中的错误并调用重定向到/调用错误方法一样简单
这是我应该在PHP或Apache或两者中做的事情吗?
目前我从各种其他SO的混合中得到以下内容,但是在页面的其余部分加载后才会报告致命错误.
任何人都有任何想法可以使用上述所有内容吗?
<?
function xhandler($number,$string,$file,$line,$context)
{
//log to text file?
//log to xml file?
//store in database?
//whatever you want to do!
echo "<h1>here be dragons!</h1>";
echo "$number,$string,$file,$line,$context";
exit();
}
function fatal_handler() {
$errfile = "unknown file";
$errstr = "shutdown";
$errno = E_CORE_ERROR;
$errline = 0;
$error = error_get_last();
if( $error !== NULL) {
$errno = $error["type"];
$errfile = $error["file"];
$errline = $error["line"];
$errstr = $error["message"];
}
echo "<h1>here be dragons!</h1>";
print_r($error);
exit();
}
register_shutdown_function( "fatal_handler" );
set_error_handler('xhandler',E_ALL);
include('show_the_content');
function_that_doesnt_exist();
echo $unterminated_line_of_code
?>
Run Code Online (Sandbox Code Playgroud)
您无法捕获致命错误。它们是致命的,遇到它们时脚本执行会立即停止。这些错误永远不应该出现在生产站点上。
应禁止在生产环境(实时站点)上以 HTML 形式显示通知和警告。
这些网站通常做的是使用 PHP 处理 HTTP 错误。您需要将这些错误重定向到 PHP 脚本来处理它们。例如,在 Apache 中,您可以使用ErrorDocument指令来执行此操作。您可以将这些指令(每个 HTTP 错误代码一个)放在服务器配置中或网站文档根目录的 .htaccess 文件中。
在 PHP 脚本中,$_SERVER['REDIRECT_STATUS']如果需要,您可以使用 过滤不同的 HTTP 错误。当您收到带有所需 HTTP 错误的请求时,您可以按照您希望的方式处理它。
| 归档时间: |
|
| 查看次数: |
1059 次 |
| 最近记录: |