[PHP-users 11810] set_error_handler を用いたエラー処理について
Togi Masaaki
php-users@php.gr.jp
Tue, 26 Nov 2002 20:51:08 +0900
土岐と申します。
青マンモス本(PHP4徹底攻略 実戦編)のエラー処理を参考にset_error_handlerを用い
てエラーを捕捉してログに書き出すプログラムを作成しました。下のようになりま
す。全てのエラーを捕捉してログに書き出すようにしたいのですが、どうも捕捉でき
るエラーと出来ないエラーがあるみたいです。
例えば、 $a = 1 / 0; とか fopenで存在しないファイルを指定したときは、ちゃ
んとログに書き出されるのですが、わざと、 $a = ""(セミコロンを書かない) と
いうことをやってみたり、require_onceで存在しないファイルを指定してみたりして
もログには書き出されずエラーが画面に表示されます。
ちなみにset_error_handlerを使うと標準のエラー処理をバイパスすると書いてあった
のでphp.iniは変更していません。
これは何か設定が悪いのでしょうか?
何かご教授頂ければ幸いです。
ちなみにphp.iniのエラー関係の設定はこのようになっております。
------------------------------------
display_errors on
display_startup_errors off
error_append_string no value
error_log no value
error_prepend_string no value
error_reporting on
html_errors on
log_errors off
track_errors off off
xmlrpc_error_number 0
xmlrpc_errors off
---------------------------------
---------------------
PHP 4.2.1
Apache 1.3.26
Ret Hat Linux 7.2
---------------------
---------------------------------------------------
<?
//エラーハンドラ関数
function userErrorHandler($errno,$errmsg,$filename,$linenum){
//エラー発生時間
$time = date("Y-m-d H:i:s");
//ログ出力用エラーを生成
$err = "\"";
$err .= $time . "\",\"";
$err .= $errno . "\",\"";
$err .= $errmsg . "\",\"";
$err .= $filename . "\",\"";
$err .= $linenum . "\"";
$err .= "\n";
//ログに保存
error_log($err,3,"/log/error.log");
}
// エラーハンドラ関数を設定
set_error_handler("userErrorHandler");
?>
--------------------------------------------------
よろしくお願いします。
----------------------------
土岐 正明 (Togi, Masaaki)
E-mail: matogi@rmail.plala.or.jp
----------------------------