PHPのエラーレベルと出力を制御する関数

PHP エラーレベル web制作

PHPファイルを扱っていると、時折ブラウザ上部にエラーメッセージが表示されることがありますよね。

コードの記述にミスがあるのが多くの原因なんですが、このエラーには種類があり、それによってエラーの度合い(レベル)も変わってきます。

ここでは、そんなPHPエラーの度合いを表す「エラーレベル」を紹介していきたいと思います。

 

致命的ですぐにでも修正する必要があるのか。それとも無視できる程度のことなのか。

この判断が出来るだけで対処法も変わってくるはずです。

スポンサーリンク

PHPエラーにはその度合いを表すレベルがあります

冒頭でお話した通り、PHPエラーにはその度合いを表す「レベル」が存在します。

これを理解しておくことで得られるメリットはこれ。

  1. エラーの度合いが判断できる
  2. エラーの原因や対処法を探りやすくなる

1、エラーの度合いが判断できる

エラーの度合いを知ることで、そもそも「すぐに修正する必要があるのか?」「放置しても問題ないのか?」が判断できます。

実は、PHPエラーメッセージを表示するかどうかを判断する関数があるくらいで、中には無視して良いレベルのエラーもあるんです。

もちろん修正するに越したことはないんですが、それが難しい場合はある程度のものはメッセージを非表示にすることで対処することも出来ます。

2、エラーメッセージから原因や対処法が判断できる

エラーメッセージは英語で表示されるので、急に表示されると驚くと思います。

といっても、メッセージは定型のものが表示されるので、エラーレベルが判断できるだけで修正の方向性がおおよそ見えてくるので安心してください。

そこを判断するキーとして最低限エラーレベルを理解しておくと良いと思いますよ。

エラーレベルの定数

ここからは実際にエラーレベルを表す定数をまとめます。

まずはこちらをご覧ください。

定数エラーレベル
E_ERRORスクリプトが中断されるほどの重大エラー
E_WARNINGスクリプトが中断されない警告(致命的ではない)
EPARSEコンパイル時のパースエラー
ENOTICEスクリプト実行時の警告(問題がないのに表示されることも)
E_CORE_ERRORPHP起動時の致命的なエラー
E_CORE_WARNINGPHP起動時の警告(致命的ではない)
E_COMPILE_ERRORコンパイル時の致命的なエラー
E_COMPILE_WARNINGコンパイル時の警告(致命的ではない)
E_STRICTコードの互換性を保つための提案(致命的ではない)
E_RECOVERABLE_ERRORキャッチできる致命的エラー
E_ALL全てのエラーと警告を表す

ちょっと分かりずらい表現もあると思いますが、最初は致命的なエラーかどうかが判断できればOKです。

 

全体的に見ると、「ERROR」と「WARNING」という2つのワードがキーになっているのが分かります。

  • ERROR・・・致命的なエラー
  • WARNING・・・致命的ではないエラー(警告)

実はブラウザ上部に表示されるエラーメッセージにもこの言葉が入っているんですが、これだけでもエラーの度合いを判断することが出来ます。

「ERROR」の表示があればすぐにコードを修正する必要がありますが、「WARNING」の場合は最悪エラーメッセージの表示を消すという手段も取れるということです。

上記エラー定数を頭に入れておくと、いざ問題が起きたときに素早く対処することが出来ますよ!

ブラウザに出力するPHPエラーの種類を制御する関数

最後に「ブラウザに出力するPHPエラーの種類を制御する関数」を紹介して終わります。

先ほど紹介した通り、ERRORの場合はコードの修正が必須ですが、WARNINGの場合はこの方法で解決出来ます。

<?php
error_reporting();
?>

error_reporting()関数は、出力するPHPエラーの種類を設定するものです。これに先ほど紹介した定数を組み合わせます。

例えばこんな感じ。

<?php
error_reporting(E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_ERROR | E_CORE_ERROR);
?>

このように、致命的なエラーのみを出力する設定にするケースが考えられます。

 

ちなみにエラー表示の設定は、サーバーによってはコントロールパネル内の「php.ini」設定で簡単に行える場合もあるので、一度サーバーを確認してみるといいですよ。