PHP(ピー・エイチ・ピー)

【PHP】エラーの表示・非表示とエラーレベルの設定

エラーの表示・非表示の設定

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

.htaccesshttpd.confで設定する場合には、「E_ALL」のような定数を設定ではなく、
ビットマスク値を設定します。

その為、
php_value error_reporting E_ALL
のような設定はできません。

定数説明、注記
E_ERROR1実行時の重大なエラー。処理の実行が中断される。
E_WARNING2実行時の警告。処理の実行は中断されない。
E_PARSE4コンパイル時のパースエラー。
E_NOTICE8実行時の注意。
E_CORE_ERROR16初期始動時点での致命的なエラー。
E_CORE_WARNING32初期始動時点での警告。
E_COMPILE_ERROR64コンパイル時の致命的なエラー。
E_COMPILE_WARNING128コンパイル時の警告。
E_USER_ERROR256ユーザーによって発行されるエラー。
E_USER_WARNING512ユーザーによって発行される警告。
E_USER_NOTICE1024ユーザーによって発行される注意。
E_STRICT2048
E_RECOVERABLE_ERROR4096キャッチできる致命的なエラー。
E_DEPRECATED8192将来的に廃止される非推奨のコードへの警告。
E_USER_DEPRECATED16384ユーザー定義の将来的に廃止される非推奨のコードへの警告。
E_ALL32767サポートされる全てのエラーと警告。
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など)を再起動して設定を読み込み直して下さい。



この記事を書いている人
株式会社ディープ
名前足立拓也

メールアドレスadachi@deep-deep.jp

関連記事

最近の記事

  1. PHP(ピー・エイチ・ピー)
  2. レンタルサーバ:おすすめの共用サーバ
  3. ホームページ(homepage)
  4. システムアップデート
  5. エックスサーバー(XSERVER)
  6. エックスサーバー(XSERVER)
  7. エックスサーバー(XSERVER)
  8. WEBサイト構築
  9. スパム(SPAM)対策
  10. サイト公開

Twitter

ダッチ@職業ブロガー兼プログラマー
@gatsu0000

  • うちの会社も時々ランサーズ使ってるけど、めっちゃ助かってます! 中小は、人件費のような固定費がかさむのは痛くてなかなか新しい人を採用できんから、 必要な時にお互いマッチングして仕事を依頼できるのはありがたいです。 創業者からのメ… twitter.com/i/web/status/1…
    about 8時間 ago via Twitter Web Client

アーカイブ

PAGE TOP