[PHP-users 28512] Re: error_reportingを0に設定してもDB.phpでE_STRICTが検出される

Kazunori Ito ito @ isp21.co.jp
2006年 2月 21日 (火) 10:21:39 JST


伊藤です。


高木様、ありがとうございます。

> マニュアルで set_error_handler について調べてみると、ヒントが得られる
> かもしれません。
>
>  http://www.php.net/manual/ja/function.set-error-handler.php
>
> set_error_handler と error_reporting の関係、set_error_handler の
> 第 2 引数についての情報などが掲載されています。

なるほど、理解できました。
「set_error_handler」は、『error_reporting() の設定にかかわらず、
どのような場合でも ユーザが設定したエラーハンドラがコールされます。』
ということなのですね。
よって、「set_error_handler」の第二引数にて以下のように設定し
想定どおりの動作にすることができました。


サンプルソース
--------------------------------------------------------
function error_handler ($errno, $errmsg, $filename, $linenum, $vars)
{
	echo $errno . " >> " . $errmsg . " >> " . $filename . " >> " . $linenum .
"<BR>";
}

print 'error_reporting = ' . ini_get('error_reporting') . "<BR>";

error_reporting(E_ALL);

print 'error_reporting = ' . ini_get('error_reporting') . "<BR>";

set_error_handler("error_handler", E_ALL);

require_once("DB.php");
--------------------------------------------------------

処理結果
--------------------------------------------------------
error_reporting = 2039
error_reporting = 2047
--------------------------------------------------------

「set_error_handler」と「error_reporting」を組み合わせて使うには
「set_error_handler」の方でエラーレベル設定しなければ
ならないということですね。

ありがとうございました。





PHP-users メーリングリストの案内