コンテンツ
エラーの表示・非表示の設定
PHPを使った開発案件でエラーを画面に表示させる方法をまとめました。
display_errorsを使って設定しますが、方法は3通りあります。
PHPスクリプトファイル毎に設定する
PHPのスクリプトファイル毎に設定する場合には、ファイルの上の方に以下の1行を追加するだけです。
【表示設定】
<?php
ini_set("display_errors", "On");
?>
もしくは、
<?php
ini_set("display_errors", 1);
?>
【非表示設定】
<?php
ini_set("display_errors", "Off");
?>
もしくは、
<?php
ini_set("display_errors", 0);
?>
開発規模が大きくなると各ページ毎に設定するのが大変です。
そのよう場合には、全ページ共通で読み込むようなファイル(例えば、err.config.phpみたいなファイル名)を作って、
そちらに上記コードを書くようにしておくと便利です。
そうしておけば、
開発環境ではエラー表示をOn(表示)、本番環境ではエラー表示をOff(非表示)と、一括で簡単に切り替えられます。
.htaccess または httpd.confで設定する
.htaccessまたはhttpd.confで設定する場合には、
以下の記述を追記するだけです。
【表示設定】
php_flag display_errors On
【非表示設定】
php_flag display_errors Off
個人的にはhttpd.confはあまり触りたくないので.htaccessでの設定をおすすめしますが、
どちらでも設定は可能です。
php.iniで設定する
php.iniを確認すると、display_errorsという項目があります。
デフォルトでは「Off」になっているので、表示に設定変更する場合には、これを「On」に変更するだけです。
【表示設定】
display_errors = On
【非表示設定】
display_errors = Off
ただし、php.iniの設定を変更すると、同一サイトに乗っかっている他のシステムにも影響が出ます。
サーバー側の構成によっては、同一サーバーに紐づけている別サイトへも影響が出る場合もあります。
その為、php.iniでの設定はあまりおすすめしていません。
※php.iniを変更した場合には、WEBサーバー(Apacheなど)を再起動して設定を読み込み直して下さい。
エラーレベルの設定
表示するエラーレベルを設定する場合には、error_reportingを使います。
PHPのスクリプトファイルで設定する
PHPのスクリプトファイルに直接設定する場合には、ファイルの上の方に以下のコードを追加します。
<?php
ini_set("error_reporting", E_ALL);
?>
もしくは、
<?php
error_reporting(E_ALL);
?>
上記の設定レベル「E_ALL」だと、PHPの全エラーを表示します。
設定レベル「E_ALL」を変更することで、表示させるエラーレベルをもっと細かく設定することが可能です。
因みに、
error_reporting(-1);
や
ini_set("error_reporting", -1);
としても、全エラーの表示になります。。
逆に、
error_reporting(0);
や
ini_set("error_reporting", 0);
とすると、全てのエラーが非表示になります。
スクリプトファイルに直接設定を書き込む場合には、
上記で説明したようにini_set("error_reporting", エラーレベル)で設定する方法とerror_reporting(エラーレベル)で設定する方法があります。
これらは、好みの方で設定して下さい。
.htaccess または httpd.confで設定する
.htaccessまたはhttpd.confで設定する場合には、
以下のように記述して下さい。
php_value error_reporting 32767
.htaccessやhttpd.confで設定する場合には、「E_ALL」のような定数を設定ではなく、
ビットマスク値を設定します。
その為、
php_value error_reporting E_ALL
のような設定はできません。
定数 | 値 | 説明、注記 |
---|---|---|
E_ERROR | 1 | 実行時の重大なエラー。処理の実行が中断される。 |
E_WARNING | 2 | 実行時の警告。処理の実行は中断されない。 |
E_PARSE | 4 | コンパイル時のパースエラー。 |
E_NOTICE | 8 | 実行時の注意。 |
E_CORE_ERROR | 16 | 初期始動時点での致命的なエラー。 |
E_CORE_WARNING | 32 | 初期始動時点での警告。 |
E_COMPILE_ERROR | 64 | コンパイル時の致命的なエラー。 |
E_COMPILE_WARNING | 128 | コンパイル時の警告。 |
E_USER_ERROR | 256 | ユーザーによって発行されるエラー。 |
E_USER_WARNING | 512 | ユーザーによって発行される警告。 |
E_USER_NOTICE | 1024 | ユーザーによって発行される注意。 |
E_STRICT | 2048 | |
E_RECOVERABLE_ERROR | 4096 | キャッチできる致命的なエラー。 |
E_DEPRECATED | 8192 | 将来的に廃止される非推奨のコードへの警告。 |
E_USER_DEPRECATED | 16384 | ユーザー定義の将来的に廃止される非推奨のコードへの警告。 |
E_ALL | 32767 | サポートされる全てのエラーと警告。 PHPのバージョンによって異なる。 PHP5.3.xでは「30719」、PHP5.2.xでは「6143」、それより前のバージョンでは「2047」。 |
php.iniで設定する
php.iniを確認すると、error_reportingという項目があります。
ここで設定レベルを変更することが可能です。
error_reporting = E_ALL & ~E_NOTICE
※php.iniを変更した場合には、WEBサーバー(Apacheなど)を再起動して設定を読み込み直して下さい。
エラーログの出力とパスの設定
PHPのエラーを出力する・出力しないは「log_errors」で、
エラーログの出力先パスは「error_log」で設定します。
PHPのスクリプトファイルで設定する
PHPのスクリプトファイルに直接設定する場合には、ファイルに以下のコードを追加して下さい。
【エラーログを出力する】
<?php
ini_set("log_errors", "On");
ini_set("error_log", "/var/log/php_error.log");
?>
【エラーログを出力しない】
<?php
ini_set("log_errors", "Off");
?>
.htaccess または httpd.confで設定する
.htaccessまたはhttpd.confで設定する場合には、
以下を記述して下さい。
【エラーログを出力する】
php_flag log_errors On
php_value error_log "/var/log/php_error.log"
【エラーログを出力しない】
php_flag log_errors Off
php.iniで設定する
php.iniで設定する場合には、以下のように設定します。
【エラーログを出力する】
log_errors = On
error_log = /var/log/php_error.log
【エラーログを出力しない】
log_errors = Off
※php.iniを変更した場合には、WEBサーバー(Apacheなど)を再起動して設定を読み込み直して下さい。
この記事へのコメントはありません。