如果找到PHP错误,请包含500个文件

时间:2016-08-03 14:43:32

标签: php .htaccess

如果我在代码中意外犯了错误,是否可以使用PHP显示500页?我尝试使用error_reporting(0),但这只会隐藏错误。如果我使用htaccess'php_flag display_errors off Chrome(和其他浏览器)只会显示500这样的错误:http://image.prntscr.com/image/4c87df1998634097a18a85d268ccc818.png

谢谢:)

3 个答案:

答案 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

https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-to-use-custom-error-pages-on-ubuntu-14-04

http://redmine.lighttpd.net/boards/2/topics/4639

但不要忘记关闭PHP错误显示,只需记录它们。