【PHP】error_reportingを利用したエラー出力の設定方法を徹底解説

今回は、PHPのエラー出力に関する話です。

PHPの初期設定ファイルであるphp.iniには、error_reportingと呼ばれる設定項目が存在します。

php.iniのerror_reportingは何を設定すれば良いか分からない
・error_reportingを理解して使いこなせるようになりたい

このように思っている人もいることでしょう。

今回は、

error_reportingの意味と設定方法

について解説します。

error_reportingについて理解できれば、エラーの出力方法をうまく設定しこなせるようになります。ぜひ、参考にしてください。

error_reportingについて

error_reportingは、出力するエラーメッセージの種類を設定できる項目です。php.iniと呼ばれる初期設定ファイルに記載されています。

PHPでは、さまざまな種類のエラーメッセージを出力できます。しかし、闇雲にすべてのエラーメッセージを出力していると、エラーの原因を突き止めるのに時間を要します。

error_reportingで関係のないエラーを除外させることで、原因分析の作業の手間を省くことができるので効率的です。

PHPのエラーの種類

PHPで出力されるエラーには種類があり、種類ごとに対応するエラー定数が設けられています。

どのようなエラーメッセージがあるのか、詳しく解説していきましょう。

エラー定数(値) 説明
 E_ERROR(1) プログラム実行が不可能になるような致命的なエラーを出力
 E_PARSE(4) PHPの文法的なエラーを出力
E_WARNING(2) E_ERRORほど致命的なものではないが、問題のある旨を出力
E_NOTICE(8) E_WARNINGほど重要ではないが、問題になりうる旨を出力
E_USER_ERROR(256) 独自に定義したエラーを出力
E_USER_WARNING(512) 独自に定義したエラー(E_USER_ERRORほど致命的でない )を出力
E_USER_NOTICE(1024) 独自に定義したエラー(E_USER_WARNINGほど重要でない )を出力
 E_USER_DEPRECATED(16384) 独自に定義した非推奨機能の警告メッセージを出力
E_CORE_ERROR(16) PHPのコア部分に起因するエラーを出力
E_CORE_WARNING(32) PHPのコア部分に起因する問題(E_CORE_ERRORほど致命的でない)を出力
E_COMPILE_ERROR(64) コンパイル処理に起因する致命的なエラーを出力
E_COMPILE_WARNING(128) コンパイル処理に起因する問題(E_COMPILE_ERROR ほど致命的でない)を出力
 E_DEPRECATED(8192) 今後動作しなくなる可能性があるコードについて警告するメッセージを出力
E_STRICT(2048) 互換性を維持するためにコードを変更する旨を出力
E_RECOVERABLE_ERROR(4096) キャッチできる致命的なエラーを出力
 E_ALL(32767) すべてのエラーを出力

一般的なエラーメッセージ

はじめに、PHPにおいて一般的なエラーメッセージについて、以下の4つを紹介します。

  • ・E_ERROR
  • ・E_PARSE
  • ・E_WARNING
  • ・E_NOTICE

E_ERROR

E_ERRORを設定すると、プログラムの続行が不可能になる致命的なエラーが出力されます。E_ERRORに該当するエラーメッセージが出力された場合、プログラムの実行が中断されることから、原因を特定し修正しなければなりません。

以下は、E_ERRORのエラーメッセージを出力するサンプルコードです。

E_PARSE

E_PARSEを設定すると、PHPの文法エラーが出力されます。E_ERRORと同様に、エラーが発生するとプログラムの実行が中断されるため、ソースコードの修正が必要です。

以下は、E_PARSEのエラーメッセージを出力するサンプルコードです。

E_WARNING

E_WARNINGを設定すると、警告メッセージが出力されます。E_ERRORとは違い、発生してもプログラムは続行されるのがポイントです。しかし、ソースコードに問題があることに変わりはないため、然るべき修正を施すのが無難です。

以下は、E_WARNINGのメッセージを出力するサンプルコードです。

E_NOTICE

E_NOTICEを設定すると、注意メッセージが出力されます。E_WARNINGと同様に、発生してもプログラムが中断することはありません。E_WARNINGと比較すると深刻度は低いですが、正しい書き方を理解するためにも、修正しておくのが無難です。

以下は、E_NOTICEのメッセージを出力するサンプルコードです。

 

【PHP】error_reportingを利用したエラー出力の設定方法を徹底解説
【PHP】error_reportingを利用したエラー出力の設定方法を徹底解説
今回は、PHPのエラー出力に関する話です。 PHPの初期設定ファイルであるphp.iniには、error_re ...

独自に定義したエラーメッセージ

PHPでは、デフォルトで用意されているエラーメッセージの他に、開発者が独自にエラーメッセージを定義できます。ここでは、開発者が独自に定義したエラーメッセージについて、以下の4つを紹介します。

  • ・E_USER_ERROR
  • ・E_USER_WARNING
  • ・E_USER_NOTICE
  • ・E_USER_DEPRECATED

E_USER_ERROR

E_USER_ERRORは、trigger_error関数で定義したE_ERRORに相当するエラーメッセージを出力します。E_ERRORと同様に、プログラムの実行が中断されるため、原因を突き止めコードを修正することが肝要です。

E_USER_WARNING

E_USER_WARNINGは、trigger_error関数で定義したE_WARNINGに相当する警告メッセージを出力します。E_USER_ERRORと違い、プログラムは続行されます。開発者に対して、問題のある動作が起きていることを知らせるために設定します。

E_USER_NOTICE

E_USER_NOTICEは、trigger_error関数で定義したE_NOTICEに相当する注意メッセージを出力します。E_USER_WARNINGと同様に、プログラムは続行されます。E_USER_WARNINGほど問題ではないが、注意すべき旨を開発者に促すのに最適です。

E_USER_DEPRECATED

E_USER_DEPRECATEDは、trigger_error関数で定義した非推奨機能に関するメッセージを出力します。今後プログラムを改善する際に廃止予定の機能を呼び出したときに、非推奨の旨を出力させることで、開発者にソースコードの修正を促せるのがポイントです。

その他のエラーメッセージ

E_CORE_ERROR・E_CORE_WARNING

E_CORE_ERROR・E_CORE_WARNINGは、いずれもPHPの初回起動時に発生するエラー・警告メッセージを出力します。PHPのコア部分に起因するため、PHPを正常にインストールしていれば、出力されることはありません。

E_COMPILE_ERROR・E_COMPILE_WARNING

E_COMPILE_ERROR・E_COMPILE_WARNINGは、いずれもPHPのコンパイル時に発生するエラー・警告メッセージを出力します。PHPの構文解析プログラムのZend Engineに起因するもののため、Zend Engineに不具合がなければメッセージが出力することはありありません。

E_DEPRECATED

E_DEPRECATEDは、今後廃止される可能性のあるPHPの諸機能を利用した際に、推奨されない旨のメッセージを出力します。

以下のサンプルコードは、PHP8.0においてE_DEPRECATEDに該当するメッセージが出力されるものの一例です。

E_STRICT

E_STRICTは、PHPのバージョンが変わることによる互換性を維持するために、ソースコードの変更を促すメッセージを出力します。PHP5.6からPHP7.0にバージョンアップした際に、E_STRICTに該当するメッセージは他のエラーとして取り扱うようになったため、E_STRICTのメッセージが出力されることはありません。

E_RECOVERABLE_ERROR

E_RECOVERABLE_ERRORは、E_ERRORに相当する致命的なエラーの中でも、キャッチすることでプログラムの続行が可能なものを出力します。

E_ALL

E_ALLは、今まで紹介したメッセージをすべて出力します。

error_reportingの設定方法

error_reportingを設定する方法は、以下の3種類があります。

  • ・php.iniを編集する方法
  • ・error_reporting関数を呼び出す方法
  • ・ini_set関数を呼び出す方法

php.iniを編集する方法

1つ目は、php.iniを直接編集する方法です。編集対象のphp.iniによって動作するすべてのPHPアプリケーションに適用されます。

MEMO
php.iniを編集する際には、開発用と本番用でファイルを分けるのがおすすめです。error_reportingに限らず、開発用と本番用で設定すべき内容は異なる場合が多いため、逐一編集する手間が省けます。
注意
php.iniはサーバ起動時にしか読み込まれないため、編集した際は、必ずサーバを再起動させましょう。

error_reporting関数を呼び出す方法

2つ目は、PHPのプログラム内でerror_reporting関数を呼び出す方法です。error_reporting関数を呼び出した場合は、php.iniよりも優先して適用されます。引数・戻り値は以下の通りです。

 引数 エラー定数、または対応する整数値
 戻り値 現在設定されているエラー定数(整数値)

以下は、error_reporting関数を利用したエラー出力設定の一例です。

MEMO
プログラムの可読性を向上させるために、error_reporting関数の引数には定数を設定するのがおすすめです。

ini_set関数を呼び出す方法

3つ目は、PHPのプログラム内でini_set関数を呼び出す方法です。error_reporting関数と同様に、呼び出されたらphp.iniよりも優先して適用されます。引数・戻り値は以下の通りです。

 引数 第1引数 設定項目(’error_reporting’を設定)
第2引数 エラー定数または対応する整数値
 戻り値 設定が成功した場合:True 失敗した場合:False

以下は、ini_set関数を利用したエラー出力設定の一例です。

MEMO
ini_set関数を利用する際は、エラー定数に加えて設定項目を必ず設定しなければなりません。スペルミスによって設定が失敗するリスクを避けたいのであれば、確実に設定可能なerror_reporting関数を利用するのがおすすめです。

 

【PHP】error_reportingを利用したエラー出力の設定方法を徹底解説
【PHP】error_reportingを利用したエラー出力の設定方法を徹底解説
今回は、PHPのエラー出力に関する話です。 PHPの初期設定ファイルであるphp.iniには、error_re ...

エラーの種類を複数設定する方法

エラーの種類を複数設定したい場合は、ビット演算子を利用することで簡単に設定できます。以下に、ビット演算子を利用したエラー設定のサンプルコードを載せているので、ぜひ参考にしてください。

まとめ

いかがでしたか? 今回は、

error_reportingの意味と設定方法

について解説しました。

error_reportingを上手に使いこなすためには、PHPのエラーの種類を把握することが重要です。そのうえで、どのエラーを出力すべきかを考えながら設定するようにしましょう。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?