PHP でなぜか、エラーやNotice が表示されない理由と調査方法
PHPで開発している時に、Notice, Warning, Errorを表示させるために設定をしたが、なぜかエラー表示すらしない場合があります。その理由をまとめてみました。
検索してもまとめを書いてあったサイトがなかったので、以下に書いておきます。
チェックするべき場所
php.ini の設定を確認する
rpmとソースでインストールしている場合は、php.ini の場所をphpinfo() 等でちゃんと調べる
.htaccess の中身を確認する
ここで制御していないか?
PHP のソースの中を確認する
どこかで以下のような設定をしていないか?
ini_set('display_errors', 'Off');
//ini_set('error_reporting', E_ALL); // E_ALL ^ E_NOTICE
set_error_handler
表示されない原因として考えられるもの
- .htaccess でdisplay_errors = Off 設定している
- PHPスクリプトのどこかで ini_set でOffにしている
- ob_start()している? (途中でエラー?)
- @ エラー制御演算子を使っている
- set_error_handler を使っている
調査方法
上記の用語でソースを検索して調べる
エラーやNoticeが起きるスクリプトを作って実行したら、どうなるか?をみてみる
まとめ
どうしても表示されない場合は、まずは切り分けを。最小構成で表示されるか確認して、徐々に範囲を広げていけば、どこに表示されない原因があるのかがわかるでしょう。
上記以外の理由があった場合は、是非ご一報頂ければと思います。