PHP 的错误机制

Parse errorphp

解析错误。问题一般出在你的程序语句上,例如少了一个逗号分号之类的,从而致使解析器放弃执行解析。thinkphp

Fatal error
严重错误。原于你的程序,例如调用一个没有定义的函数。函数

Warning
警告。通常出自类型的不匹配,或参数有问题等小问题,解析器仍能够解析。ui

Notice
提示。给出提示信息,好比你没有给一个变量赋值,却要把它打印出来。spa

Strict notice
细微提醒。好比说你的文本格式啦,或是PHP4PHP5之间的差别啦,没必要管它们get

 

 

咱们通常PHP报错机制是内部自带的,可是经过 set_error_handler这个函数,咱们能够经过本身自定义的函数,来显示人性化的输出,防止被黑客攻击,由于it

自带的错误信息会透露文件哪一行,那一个错误io

 

注:The following error types cannot be handled with a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and most of E_STRICT raised in the file where set_error_handler() is called.function

上面列出的这几个错误类型不能被自定义require

 

  可是有一种方法, register_shutdown_funtiion 这个能够作到,它的做用是 无论代码是成功执行完成仍是报错中断,都会执行这个方法,报错时,就会往logs里面写入错误信息

因此咱们能够执行它,来输出本身须要的页面。 

注:本人目前知道这个函数的用法,是在thinkphp里面,并且是在使用require_once或者include_once的文件里面,若是出现代码错误,则不会出现原始的PHP报错,demo以下

function getE(){
ob_end_clean();
echo 333;
}
register_shutdown_function('getE');
require_once 'index.php';

上面代码中,index.php里面有错误,可是也不会显示.

相关文章
相关标签/搜索