如果我在代码中意外犯了错误,是否可以使用PHP显示500页?我尝试使用error_reporting(0)
,但这只会隐藏错误。如果我使用htaccess'php_flag display_errors off
Chrome(和其他浏览器)只会显示500这样的错误:http://image.prntscr.com/image/4c87df1998634097a18a85d268ccc818.png
谢谢:)
答案 0 :(得分:2)
在PHP 5.x中,您可以捕获除致命之外的所有错误。只需查看http://php.net/manual/en/function.set-error-handler.php
即可快速举例:
<?php
function handler($errno, $errstr, $errfile, $errline)
{
echo file_get_contents('500.html');
die();
}
set_error_handler('handler', E_ALL);
答案 1 :(得分:2)
组合这些函数以在错误时进行重定向:
error_get_last()
#获取lasterror
header()
#to rediect
register_shutdown_function()
#用error_get_last
ob_start() / ob_flush()
#catch内容,迟到或不显示
在php文件的开头:
ob_start();
register_shutdown_function(function(){
$err = error_get_last();
//check the $err
if($err){
header('Location: 505.html');
exit;
} else {
ob_flush();#or ob_end_flush();
exit;
}
});
你也可以用这个来捕捉致命的错误。
答案 2 :(得分:0)
任何网络服务器(apache / nginx / lighttpd)都可以让您自定义错误页面
https://httpd.apache.org/docs/2.4/custom-error.html
http://redmine.lighttpd.net/boards/2/topics/4639
但不要忘记关闭PHP错误显示,只需记录它们。