エラーの状況を調べようと「error_reporting(E_ALL)」と指定しても、詳しいエラーメッセージが表示されない場合があります。原因はいくつか考えられます。
(原因1) エラーメッセージが非表示になっている
レンタルサーバーなどでは、セキュリティ上の都合でエラーメッセージの詳細を表示しない設定になっているはずです。エラーメッセージを表示するには、error_reporting(E_ALL)の前でdisplay_errorsという設定項目を「On」にする必要があります。
○エラーメッセージが表示されるように設定する
ini_set(“display_errors”, On);
error_reporting(E_ALL);
(原因2) E_STRICTはE_ALLに含まれない
PHP5の仕様に基づいてコード変更を促すE_STRICTエラーは、E_ALLには含まれていません。これを含めてすべてのエラーメッセージを表示するには、次のように設定する必要があります。
○E_STRICTを含めてすべてのエラーメッセージを表示する
error_reporting(E_ALL | E_STRICT);
(原因3) .htaccessではE_ALLが使えない
.htaccessにPHPの設定を記述する場合は、E_ALLなどの定数を指定できません。次のように数値で指定する必要があります。
○.htaccessでエラーレベルを設定する(E_ALL)
php_value error_reporting 2047
「E_ALL | E_STRICT」の場合は、「php_value error_reporting 4095」とします。
この「4095」などの数値は、PHPのバージョンによって異なります。うまくいかないときは、「echo E_ALL」などとして定数を示す数値を調べてみましょう。
【関連記事】エラー表示レベルの設定がうまくいかないとき