PHPでのerror表示方法とは?errorレベルの設定をすることも可能

PHPにはデバッグ用の関数などと共に、errorを表示させるための独自の方法があります。errorを表示させることでerrorの原因を特定しやすくなって便利です。

今回はPHPでのerror表示方法やerrorログの出力方法などをご紹介します。

PHPでのerror表示はphp.iniとini_set関数の2種類ある

PHPでerrorを表示させる方法としては、php.iniとini_set関数の2種類が存在しています。php.iniはファイルを開いて中身を直接いじることになります。

それに対してini_set関数はPHPのプログラム内でini_set関数を使って設定します。以下ではphp.iniとini_set関数それぞれでのerror表示設定方法をご紹介します。

php.iniを開いて直接error表示設定する

まずはphp.iniファイルを直接いじる方法をご紹介します。PHP.iniファイルを適当なメモなどで開き、以下の項目をONに変更します。

この項目がOFFの場合にONに変更して更にWebサーバーを再起動する必要があります。

Webサーバー再起動後以下のようなerrorの出るプログラムを実行してみます。

すると以下のようなログが出力されます。

errorの詳細が表示されており、どこのファイルの何行目がおかしいのかまで教えてくれています。

その下に$num2の実行結果も表示されて、ミスっているのがわかりますね。

ini_set関数を使ってerror表示設定する

php.iniを開いて直接設定する方法だけでなく、PHPのプログラム内からini_set関数を使って設定することもできます。

ini_set関数を以下のように記載してdisplay_errorsを設定します。

()内の1つ目の引数を「display_errors」にし、2つ目の引数に0か1を指定することでON・OFFができます。

0だとONになり1だとOFFになります。

PHPのerror表示にはレベルを設定することができる

PHPでのerror表示にはレベルを設定することが可能です。

errorレベルの設定で出力するerrorの種類を指定すれば、errorの整理がしやすくなります。

こちらも設定方法は2種類あり、1つはPHP.iniを直接いじる方法で、もう一つはerror_reporting関数を使って設定する方法です。

ここからは2種類どちらのやり方も詳細にご紹介します。

PHP.iniでerrorレベルを設定する

まずPHP.ini内で設定する場合は、以下の項目を設定します。

以下のようなerrorレベル用の定数を使って設定します。

errorレベル定数 機能
E_ALL PHPでサポートされているエラーと警告全て
E_ERROR 実行した際の重大なerror
E_WARNING 実行した際の警告(致命的ではないもの)
E_PARSE コンパイルした際の解析error
E_NOTICE 実行した際の警告(errorが起こる状況だった際のもの)
E_DEPRECATED 今後のバージョンでは動作不可なコードに関しての警告
E_STRICT 実行する際の注意

&を使って複数設定可能で、定数の前に「~」をつけることで否定をすることができます。

上記サンプルでは最初に「E_ALL」で全てのエラーと警告を設定し、その中から「E_NOTICE」と「E_STRICT」を「~」を付けて設定しています。

なので、実行した際の警告(errorが起こる状況だった際のもの)と実行する際の注意以外のerrorを全て表示するように設定されています。

定数と「&」・「~」を組み合わせてerrorレベルを細かく設定しています。もちろんこちらも設定したあとはWebサーバーを再起動しないと、設定が有効にならないので注意です。

error_reporting関数を使ってもerrorレベル設定が可能

php.ini内でerrorレベルの設定方法を紹介しましたが、PHPプログラム内からerror_reporting関数を使って設定する方法もあります。

PHPプログラム内からerror_reporting関数を使って設定する場合は、Webサーバーの再起動をしなくて済むのが便利です。

書き方としては以下のようになります。

引数にはphp.iniと同じerrorレベル用定数を指定します。

基本的には以下のような記述になります。

上記の記述でerrorの全てを表示できるように設定できます。

【初心者向け】PHPのエラーを確認する方法!
【初心者向け】PHPのエラーを確認する方法!
PHPを学ぶ上で、付きまとうのが「エラー」ですよね。 ですが、初心者にとってエラーの内容を調べるのも大変ですよ ...

errorログの出力はerror_log関数を使って行う

errorはただ表示させるだけでなく、errorログの出力をさせることができます。ファイルなどにerrorログを出力させることで、一度error表示画面を閉じてしまっても再度error内容の確認が可能です。

配列の内容まで表示させることができるので、以下で出力方法をご紹介します。

error_log関数の使い方

errorログの出力にはPHPプログラム内でerror_log関数を使います。error_log関数は以下のような書き方で4つの引数を指定する必要があります。

引数でそれぞれ以下のように設定が可能です。

  • 第一引数は出力するエラーメッセージ
  • 第二引数はメッセージタイプ
  • 第三引数はメッセージの送信先
  • 第四引数はメッセージタイプが1の場合のみ追加ヘッダを指定可能

第四引数のみ特定の場合指定可能で、基本は第一~第三の引数で設定します。

メッセージタイプは0~4の数字て指定可能で、それぞれ以下のような機能を指定できます。

メッセージタイプ 機能
0 php.ini内「error_log=」で指定したファイルにメッセージ出力
1 第三引数のアドレスに電子メールで送信
2 現在は使用できない
3 第三引数指定のファイルにエラーメッセージを追加
4 エラーメッセージをSAPIログ出力ハンドラに送信

実際にerror_log関数を使うと以下のようになります。

上記の場合は第二引数に0を指定してphp.iniファイル内「error_log=」で指定したファイルにメッセージを出力しています。

そのため第三引数を指定する必要がなくなります。

指定したファイルに出力させる

前項のようにメッセージタイプ0のphp.iniで指定したファイルへの出力ならば、第三引数で出力先を指定する必要はないです。

メッセージタイプで1(アドレス)または3(ファイル)が指定された場合、第三引数で出力先の指定が可能です。

以下のような感じで出力先の指定ができます。

上記を実行すると存在しないURLであるため、指定したerror.logに以下の内容が出力されます。

メッセージタイプ1の場合は第三引数にアドレスを指定すれば、errorメッセージ内容をメールとして送信してくれます。

配列の内容を出力させることも可能

errorが通常の変数で起こっている場合は、変数の中身が表示できれば問題ないです。これが配列で起こっている場合、配列の中身が見れないとerrorの原因が特定できません。

そういったことがないようにerror_logでは配列の中身が見れるよう、第一引数に配列を指定すれば、中身が表示されます。以下のように第一引数で配列構造になった変数を入れれば、配列の中身まで出力されます。

これを実行すると指定したerror.logファイルに以下のような配列の中身が表示されます。

これで配列にきちんと指定した中身が入ってるかなどを確認できます。

まとめ

今回はPHPでのerror表示方法やerrorログの出力方法をご紹介しました。error表示に関してはPHP.iniかini_set関数の2種類の方法があります。

errorログ出力はerror_log関数を使うことで、ファイルへの出力や配列の中身を表示させることもできます。errorの表示やerrorログの出力は色々カスタムできますので、必要に応じてやってみてくださいね。

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