ホームページ  >  記事  >  バックエンド開発  >  PHP でエラーを即座にキャッチし、PHP_PHP を使用して電子メール通知を送信するための実装コード チュートリアル

PHP でエラーを即座にキャッチし、PHP_PHP を使用して電子メール通知を送信するための実装コード チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:14:12800ブラウズ

PHP を開発している友人は、プログラムに例外やエラーがあることが最も心配なことであることを知っています。これらの条件がユーザーの画面に出力されると、ユーザーは恐怖を感じ、さらには仕事を失うことになります。方法はログに記録することですが、この厄介な問題を解決するために、私はこのコードを書きました。作成した PHP プログラムがエラーを起こしたときにエラー内容をキャプチャして、メールに送信します。


PHP でエラーを即座にキャッチし、PHP_PHP を使用して電子メール通知を送信するための実装コード チュートリアル

コードをコピーします。 コードは次のとおりです。


Define('SYS_DEBUG',false);
IF(SYS_DEBUG) {
ini_set('display_errors','on');
Error_reporting(E_ALL);//オンラインになった後にこの設定を使用します。 Error_reporting(E_ERROR | E_WARNING | E_PARSE) );
}Else{
ini_set('display_errors','off');

//エラーをキャッチしました
Register_shutdown_function('Fun::Error'); /**
一般的なエラー処理
パラメータ:
出力する内容、プログラムの実行を終了するかどうか
指示:
値が渡された場合、この関数を使用してカスタマイズされたエラー内容を出力できます
さらに、 Register_shutdown_function を使用して、エラー内容を自動的にキャプチャし、キャプチャしたエラー内容をメールに送信します。 Register_shutdown_function の仕組みは、プログラムが完了したとき、または途中でエラーが発生したときに関数が呼び出されるというものです。エラー内容が見つからない場合は、最後のエラー内容が取得されます。
Return:
内容は画面または電子メールに直接出力されます。
Usage:
Fun::Error('Error content'); ::Error('エラー内容',False);*/
パブリック静的関数エラー($M='',$E=True){
$ErrTpl='';

$M=Trim($M);
IF($M!='') {//手動呼び出し
$M=' 注: ;
Echo Strtr($ErrTpl,Array('{$M}'=>$M));unSet($ErrTpl);
IF($E===True) {Die();}
}Else{// プログラムが実行され、エラーが自動的にキャプチャされたら、
$M=error_get_last() を呼び出します。 // 最後のエラーを取得します
IF(!Is_array($M) Or Count($M)IF(!File_Exists($M['file'])) {Unset($M);Return ;}

//キー エラー コードの 5 行を取得します。コンテンツを取得できません。エラー ファイルが存在しないことを示します
$E=Array_slice(File($M['file']),($M['line']-4),5); ($E)) {未設定 ($M,$E);Return ;}

$E['M']='';
For($i=0;$i$ E[$i]=isSet ($E[$i]) ? $E[$i] : '';
$E['M'].=' ; $i==3) ? ''.(($M['line']-3)+($i+1)).' : (($M['line ']-3)+( $i+1));
$E['M'].=': '.Htmlspecialchars($E[$i],ENT_QUOTES,'UTF-8').'}
$ E=&$E['M'];

$M='

エラーの説明:< /b>
'.$M['file'].' '.$M['line']< /b> タイプ '.$M['type'].' '.$M['message'].'
br> キーコード:
'.$E.'
'.self::now('Y-m-d H:i:s',time()).'
';

$M=Strtr($ErrTpl,Array('{$M}'=>$M));unSet($ErrTpl); ', 'config');
IF(!self::Mail2($G['Spe'],'警告: '.$G['Tit'].' PHP プログラム エラーが発生しました!',$M) SYS_DEBUG== =True){
throw new Exception('警告: '.$G['Tit'].' PHP プログラム エラーが発生しました!

'.$M); SYS_DEBUG) { エコー $M;}
unSet($E,$M,$G);
Die()
}
}
/**
メールを送信する
パラメータ:
受信者、メールのタイトル (改行なし)、メールの内容 (行は n で区切る必要があり、各行は 70 文字を超えることはできません)
説明:
PHP 組み込み関数を呼び出すMail はメールを送信します
戻り値:
ブール値を返します
使用法:
$IsSend=Fun::Mail2($email,$tit,$msg);*/
パブリック静的関数 Mail2($to,$tit) ,$msg ) {
IF(Filter_var($to,FILTER_VALIDATE_EMAIL)==''){
新しい例外をスロー('メールアドレスが間違っています!')
}

$tit='=?UTF-8?B? '.Base64_Encode ($tit).'?=';
$msg = str_replace("n.","n..",$msg); //Windows は行頭にピリオドを見つけると、この質問を回避してください 1 つのピリオドを 2 つのピリオドに置き換えてください

Return Mail($to,$tit,$msg,'From:'.seft::getG('config/SYS/Mal')."n".'コンテンツタイプ:text/html;charset=utf-8');



http://www.bkjia.com/PHPjc/326333.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/326333.html

技術記事

PHP を開発している友人は、プログラムに例外やエラーが発生すると、ユーザーは恐怖を感じ、さらには職を失うことを知っています。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
{$M}