CodeIgniterで、PHPエラーメッセージを電子メールで受け取る方法はありますか?
-
06-07-2019 - |
質問
エラーログをメールで受け取りたい。たとえば、 Warning-level
エラーメッセージが表示される場合、それについてのメールを受け取りたいです。
CodeIgniterでそれを機能させるにはどうすればよいですか?
解決
Exceptionコアクラスを拡張して実行できます。
CIのメールクラスへの参照を調整する必要がある場合があります。このようなライブラリからインスタンス化できるかどうかはわかりません。私はCIのメールクラスを自分では使用せず、Swift Mailerライブラリを使用しています。しかし、これで正しい道が開けるはずです。
ファイルMY_Exceptions.phpを作成し、/ application / libraries /(またはCI 2の場合は/ application / core /)に配置します
class MY_Exceptions extends CI_Exceptions {
function __construct()
{
parent::__construct();
}
function log_exception($severity, $message, $filepath, $line)
{
if (ENVIRONMENT === 'production') {
$ci =& get_instance();
$ci->load->library('email');
$ci->email->from('your@example.com', 'Your Name');
$ci->email->to('someone@example.com');
$ci->email->cc('another@another-example.com');
$ci->email->bcc('them@their-example.com');
$ci->email->subject('error');
$ci->email->message('Severity: '.$severity.' --> '.$message. ' '.$filepath.' '.$line);
$ci->email->send();
}
parent::log_exception($severity, $message, $filepath, $line);
}
}
他のヒント
ソリューションから除外されていることの1つは、Emailライブラリ(またはCodeIgnitersのその他のライブラリとネイティブ関数のいずれか)をロードして使用するためにCodeIgnitersスーパーオブジェクトを取得する必要があることです。
$CI =& get_instance();
完了したら、 $ this
の代わりに $ CI
を使用して、電子メールライブラリをロードし、すべてのパラメーターを設定します。詳細については、ここをクリックして、ライブラリ内のCodeIgniterリソースを活用するセクション。
もう1つのオプションは、ダイジェストの電子メール送信をサポートするログローテーションアプリケーションを取得することです。どのプラットフォームを使用しているかはわかりませんが、error_logファイルを監視して更新を送信するものを用意することもできます。 (error_logはApache、CIにはシステムに/ logs /フォルダーがあり、IISにはWindowsイベントがあります)
これを行うオープンソースプロジェクトをリリースしようとしています。エラーを収集し、問題トラッカーに送信し、重複を検出し、問題に変換してスタッフにメールを送信します。
詳細は https://sourceforge.net/news/?group_id=317819&idにあります。 = 293422 およびそれが言及しているバージョン0.1.7は数日でリリースされる予定です。
オープンソーストラッカーは http://elastik.sourceforge.net/
にあります。ご意見、ありがとうございました
オープンソースgithubプロジェクトを設定して、このソリューションを設定可能に実装しますメールパラメータ。