人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP4にて、Fatal Error や Warning や Notice が出た場合に管理者にメールを送る処理を書いています。

以下のような設定をしているのですが、どうも動きが怪しいのです。
set_error_handler("errorHandler");

メールが送信されてきたり、全く送られてこなかったりします。Googleで検索などして、1日原因を調べているのですが、何が原因でそうなるのかが全く掴めなく困ってしまいました。

現状、この辺があやしいと思っています。

1. set_error_handlerしているファイルでエラーでないと表示されない?
2. あちこちの利用しているクラスで、error_reporting(E_ALL); を設定していたりするとおかしくなる?
3. output_buffering = 4096 を設定するとhttpdを再起動してもおかしくなる?

こうなるとおかしくなる等、何かヒントを頂けないでしょうか?

環境は、CentOS 4.4, PHP 4.3.9です。

●質問者: p_question
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CentOS Google httpd PHP Warning
○ 状態 :終了
└ 回答数 : 1/4件

▽最新の回答へ

1 ● もすぴー
●60ポイント

ヒントというより確認ですが、set_error_handlerしてるPHPは

各PHPで必ず require してるんですよね?

>メールが送信されてきたり、全く送られてこなかったりします。

これは何を見て判断しているのでしょうか?

エラーメールが来る、来ない時のエラーログの違いが分かると

答えやすいかもしれません。

あと一応、set_error_handler("errorHandler");で呼んでいる

errorHandler内部で、そもそもエラーになってないかも確認した方がよいと思います。

◎質問者からの返答

require_once で呼び出していて、エラーにもならないので、確実に読んでいます。

以下のシンプルな構成でもメールが飛びません。

tail -f /var/log/maillog は何も表示せず。

index.php

require_once('error_report.php');

aa <- わざとエラーを起こす。

(以下、色々な処理)

?>

以下、error_report.php

error_reporting(E_ALL);

function errorHandler ($errno, $errstr, $errfile, $errline){

$msg = 'TEST';

mail('root@localhost', 'Error TEST', $msg);

}

}

set_error_handler("errorHandler");

?>

あ、今調べていて、軽いエラーなら、送信されるようですが、上記のような、Parse Errorのものでは、送信されないです。もしかして、スクリプトが止まってしまうようなものは、ハンドリングできないのですか?

あと、index.php 以外のファイルで実行しているNotice なども反応しなくなります。

どういう範囲でエラーをハンドリングしてくれるのでしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ