Points & Lines

【PHP】🔰エラーレベルの種類と画面出力設定

PHPのエラーレベル

PHPのエラーレベルの基本と、画面出力設定について解説します。

環境: PHP 7.4.15, 5.3.29

主なエラーレベルの種類

PHPのエラーレベル定数は15種類ありますが、今回はその中でもよく使われる以下のエラーレベルを解説します。

E_ERROR

処理を継続できない重大で致命的なエラー

例: 未定義の関数を実行しようとした場合

出力エラーメッセージ
Fatal error: Uncaught Error: Call to undefined function (関数名) in

E_WARNING

警告を表すが処理は継続できる

例: 0除算を行った場合 ※ PHP 8系からはE_ERROR

出力エラーメッセージ
Warning: Division by zero in

E_NOTICE

警告のレベルではないお知らせ(継続可)

例: 未定義の変数を参照した場合 ※ PHP 8系からはE_ERROR

出力エラーメッセージ
Notice: Undefined variable: (未定義変数名) in

E_PARSE

PHPプログラム解析時のエラー (コンパイルエラー)で全ての処理が実行されない(継続不可)

例: 変数名の前に$を記述していない、行末に;(セミコロン)を記述していない など

出力エラーメッセージ
Parse error: syntax error, unexpected

E_DEPRECATED

将来のバージョンで廃止される予定のコードへの非推奨警告(継続可)

例: PHP5.3で 非推奨となっている eregi関数を使用した場合

出力エラーメッセージ
Deprecated: Function eregi() is deprecated in

※注意: PHP 8系からエラーレベルの仕様が従来より厳しくなり、従来はE_NOTICEだったものがE_WARNINGへ、E_WARNINGだったものがE_ERRORへと格上げされています。

エラーレベル設定

エラーメッセージを画面に出力する・しない

設定しているエラーレベル(後述)に関係なくエラーメッセージを画面上に表示する、しないの出力自体の設定を行います。

PHPのエラーメッセージは脆弱性などをはじめ内部的な情報を含むため基本的に本番環境では画面に表示されないように設定します。

逆に開発環境では、プログラムの記述誤りや不正なコードによる意図しない挙動を防止するために前述のNOTICEエラーも含め、全て出力されるようにして開発者へ通知されるようにしておく必要があります。

表示または非表示の設定はPHPプログラム、またはphp.iniで設定を行います。

PHP実行プログラムで行う場合

in_set関数で、display_errorsの値を設定します。

<?php

ini_set('display_errors', 1); // エラーメッセージを表示
ini_set('display_errors', 'On'); // エラーメッセージを表示

ini_set('display_errors', 0); // エラーメッセージを非表示
ini_set('display_errors', 'Off'); // エラーメッセージを非表示

php.iniで設定する場合

PHPの設定ファイル、php.iniで設定する場合は以下の箇所を探して値を変更します。

display_errors = On

On または1 エラーメッセージを表示
Off または0 エラーメッセージを非表示

php.iniファイルの記述は行頭にコメントアウトのための;(セミコロン)がある場合に無効化されているので、有効化させる際は削除してください。

※ php.iniの設定内容変更時はApacheの再起動が必要となります。

出力エラーレベルの設定

error_reportingオプションの機能で、画面に出力する際のエラーレベルの設定を変更することができます。

この場合、エラーレベルの種類ごとに設定するのではなく、全種類の中から特定のエラーレベルは出力を除外するという指定の方法となります。

PHP実行プログラムで行う場合

実行プログラム上で設定する場合は、error_reporting関数で設定します。

<?php

ini_set('display_errors', 1);

// 全てのエラーレベルを出力対象とする
error_reporting(E_ALL);

// 出力するエラーレベルから E_NOTICE を除く
error_reporting(E_ALL & ~E_NOTICE);

// 出力するエラーレベルから E_NOTICE と E_DEPRECATED を除く
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
php.iniで設定する場合

display_errors同様、error_reportingもphp.iniで設定することが可能です。

error_reporting関数と同様に値を指定すればOK

php.ini

error_reporting = E_ALL
error_reporting = E_ALL & ~E_NOTICE

Follow me!

モバイルバージョンを終了