background image

另外还可以配合 Register_shutdown_function 实现自动抓取错误内容,并将抓取的错误内容
发送到 Email

 

Register_shutdown_function

 

的机制是程序执行完毕或中途出错时调用函数

如果是自动抓取错误时被调用,则会取得最后一次出错的内容,如果发现没有错误内容则跳

 


返回: 
内容会被直接输出至萤幕或 Email

 

用法: 
Fun::Error('错误内容'); 
Fun::Error('错误内容',False); 
/**/

 

Public Static Function Error(

$M

='',

$E

=True){ 

$ErrTpl

='<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-

8"></head><body><table cellspacing="0" cellpadding="0" border="0"><tr><td 
style="padding:5px;background-color:#F57900;font-size:13px;border:1px solid 
#444;color:#222;">{$M}</td></tr></table>';
 

$M

=Trim(

$M

); 

IF(

$M

!='') {

//

 

手工调用

$M

=' <b>注意:</b> '.

$M

Echo

 

Strtr

(

$ErrTpl

,Array('{$M}'=>

$M

));unSet(

$ErrTpl

); 

IF(

$E

===True) {Die();} 

Return ; 
}Else{

//

 

程式执行完毕自动抓取错误时调用

$M

=error_get_last();

//

 

取得最后产生的错误

IF(!

Is_array

(

$M

) Or 

Count

(

$M

)<4) {Unset(

$M

);Return ;} 

IF(!

File_Exists

(

$M

['file'])) {Unset(

$M

);Return ;} 

 

//取得 5 行出错关键代码,如果取不到内容,

 

说明出错档桉不存在

$E

=

Array_slice

(File(

$M

['file']),(

$M

['line']-4),5); 

IF(!

Is_array

(

$E

)) {Unset(

$M

,

$E

);Return ;} 

 

$E

['M']=''; 

For(

$i

=0;

$i

<5;

$i

++) { 

$E

[

$i

]=isSet(

$E

[

$i

]) ? 

$E

[

$i

] : ''; 

$E

['M'].=' '; 

$E

['M'].=(

$i

==3) ? '<b>'.((

$M

['line']-3)+(

$i

+1)).'</b>' : ((

$M

['line']-3)+(

$i

+1)); 

$E

['M'].=': '.Htmlspecialchars(

$E

[

$i

],ENT_QUOTES,'UTF-8').'<br>';