php.ini の設定により動作が変化します。
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
error_reporting | NULL | PHP_INI_ALL | |
display_errors | "1" | PHP_INI_ALL | |
display_startup_errors | "1" | PHP_INI_ALL |
PHP 8.0.0 より前のバージョンでは、デフォルト値は "0" でした。
|
log_errors | "0" | PHP_INI_ALL | |
log_errors_max_len | "1024" | PHP_INI_ALL | |
ignore_repeated_errors | "0" | PHP_INI_ALL | |
ignore_repeated_source | "0" | PHP_INI_ALL | |
report_memleaks | "1" | PHP_INI_ALL | |
track_errors | "0" | PHP_INI_ALL | PHP 7.2.0 以降で非推奨になり、PHP 8.0.0 で削除されました。 |
html_errors | "1" | PHP_INI_ALL | |
xmlrpc_errors | "0" | PHP_INI_SYSTEM | |
xmlrpc_error_number | "0" | PHP_INI_ALL | |
docref_root | "" | PHP_INI_ALL | |
docref_ext | "" | PHP_INI_ALL | |
error_prepend_string | NULL | PHP_INI_ALL | |
error_append_string | NULL | PHP_INI_ALL | |
error_log | NULL | PHP_INI_ALL | |
syslog.facility | "LOG_USER" | PHP_INI_SYSTEM | PHP 7.3.0 以降で有効です。 |
syslog.filter | "no-ctrl" | PHP_INI_ALL | PHP 7.3.0 以降で有効です。 |
syslog.ident | "php" | PHP_INI_SYSTEM | PHP 7.3.0 以降で有効です。 |
以下に設定ディレクティブの簡単な説明を示します。
error_reporting
int
エラー出力レベルを設定します。パラメータは、あるビットフィールドを表 す整数か定数名で指定します。このerror_reportingのレベルと定数は、 定義済の定数および php.iniに記述されています。 実行時に設定するには、 error_reporting() 関数を指定してください。 display_errors ディレクティブも参照してください。
デフォルト値は
E_ALL
です。
PHP 8.0.0 より前のバージョンでは、
E_ALL
&
~E_NOTICE
&
~E_STRICT
&
~E_DEPRECATED
でした。
これは、E_NOTICE
、
E_STRICT
、
そして E_DEPRECATED
レベルのエラーが出力されないということです。
注意: PHP 定数の、PHP 以外での使用
PHP の定数を、httpd.conf など PHP の外部で使用しても何の意味もありません。外部で使用する場合には、 int 型の値を指定しなければなりません。 また、エラーレベルはこれからも追加されることがあるので、 最大値 (
E_ALL
に対応する値) は変わる可能性があります。そこで、E_ALL
を指定する場面では2147483647
(E_ALL
だけではなくすべてのエラーを含める) のような数を指定するようにしましょう。 これは現状の全ビットに対応した上で、かつ値が将来追加された場合にも対応できます。
display_errors
string
エラーをHTML出力の一部として画面に出力するかどうかを定義します。
"stderr" を指定すると、エラーの内容を stdout
(標準出力) ではなく stderr
(標準エラー出力)
に送ります。
注意:
開発をサポートする仕組みであり、本番のシステムでは 使用すべきではありません (例えばインターネットに接続されたシステムなど)。
注意:
display_errors は実行時にも設定可能(ini_set() 関数を用いて)ですが、スクリプトが致命的(fatal)なエラーを発生した場合は その設定は反映されません。なぜなら、要求されたアクションは 実行されなかったからです。
display_startup_errors
bool
display_errorsをonにした場合でも、PHPの起動シーケンスにおいて発 生したエラーは表示されません。デバッグ時を除き、 display_startup_errorsをoffにしておくことが強く推奨されます。
log_errors
bool
エラーメッセージを、サーバーのエラーログまたはerror_logに記録するかどうかを指定 します。このオプションはサーバーに依存します。
注意:
実用Webサイトではエラー表示を行う代わりにエラーを記録することを 強く推奨します。
log_errors_max_len
int
log_errorsの最大長をバイト単位で設定します。 error_log には、 この設定で情報が追加されます。デフォルトは 1024 で、0 を指定すると 最大長の制限は全く適用されなくなります。 この長さはエラーログへの記録や エラーの表示、そして $php_errormsg に適用されます。 しかし、明示的に呼び出される error_log() のような関数には適用されません。
intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。ignore_repeated_errors
bool
繰り返されるメッセージを記録しません。エラーの繰り返しは、 ignore_repeated_sourceが trueに設定されるまで同じファイルの同じ行で発生します。
ignore_repeated_source
bool
メッセージの繰り返しを無視する場合にメッセージのソースを無視しま す。この設定をOnにすると、異なるファイルまたはソース行からの同じ エラーメッセージの繰り返しを記録しなくなります。
report_memleaks
bool
このパラメータを On (デフォルト) にすると、Zend メモリマネージャーが検出した
メモリリークの報告を表示します。この報告は、Posix プラットフォームでは標準エラー出力に送られます。
Windows では、デバッガに OutputDebugString() を使って送られ、
» DbgView のようなツールで見ることができます。
このパラメータが使えるのはデバッグビルドだけであり、かつ
error_reporting で E_WARNING
を有効にしている場合のみです。
track_errors
bool
有効にした場合、直近のエラーメッセージが、 $php_errormsg 変数に常に代入されます。
html_errors
bool
有効にすると、エラーメッセージにHTMLタグが含まれるようになります。 HTML形式のエラーメッセージでは、ユーザーがエラーまたはエラーを発生した関数を説明するページ に導くようクリック可能なメッセージを出力します。これらのリファレ ンスは、docref_root およ び docref_extの設定に依存 します。
無効にすると、エラーメッセージは単なるプレーンテキストになります。
xmlrpc_errors
bool
有効にすると、通常のエラー報告を無効にして XML-RPC 形式のエラーメッセージとします。
xmlrpc_error_number
int
XML-RPC の faultCode 要素の値として使用します。
docref_root
string
新しいエラーフォーマットはエラーやエラーの原因となった関数に関するマニュアル
のページの情報を含んでいます。マニュアルのページによっては母国語でダウンロードが
可能であり、このiniディレクティブをマニュアルのローカルコピーのURLにセット
することができます。
マニュアルのローカルコピーが "/manual/"
でアクセスできるとすると、単に
docref_root=/manual/
とするだけです。
ローカルコピーのファイルの拡張子はdocref_ext=.html
で指定できます。拡張リファレンスを使用することもできます。例えば
docref_root=http://manual/en/
または
docref_root="http://landonize.it/?how=url&theme=classic&filter=Landon&url=http%3A%2F%2Fwww.php.net%2F"
が使用できます。
ほとんどの場合 docref_root の値の最後を "/"
にしようと思うでしょう。
しかし上の二つ目の例を見ではその必要はありません。
docref_ext
string
docref_rootを参照して下さ い。
注意:
docref_extの値はドット
"."
で始まる必要があります。
error_prepend_string
string
エラーメッセージの前に出力する文字列。 エラーメッセージを画面に表示する時にだけ使います。 主な目的は、 エラーメッセージの先頭に追加のHTMLマークアップを付加できるようにすることです。
error_append_string
string
エラーメッセージの後に出力する文字列。 エラーメッセージを画面に表示する時にだけ使います。 主な目的は、 エラーメッセージに追加のHTMLマークアップを付加できるようにすることです。
error_log
string
スクリプトエラーが記録されるファイル名です。
ファイルはウェブサーバーユーザーで書き込めなければなりません。
syslog
が指定されると、エラーはファイルではなく
システムロガーに送られます。これは Unix では syslog(3) であり
Windows ではイベントログのことです。
syslog() も参照してください。
このディレクティブが設定されていない場合、エラーは SAPI
エラーロガーに送信されます。これは、例えば Apache のエラーログ、
あるいは CLI なら stderr
になります。
error_log() も参照ください。
syslog.facility
string
どの種類のプログラムがメッセージを記録するのかを指定します。 error_log が "syslog" の場合にだけ有効です。
syslog.filter
string
記録されたメッセージをフィルタリングするフィルターの種類を指定します。
フィルターで許可された文字はそのまま記録されますが、許可されていない文字は
\x
で始まる十六進表記に変換して記録されます。
all
–
ロギングされる文字列は改行文字で分割され、すべての文字は変更せずに渡されます。
ascii
–
ロギングされる文字列は改行文字で分割され、
印刷可能な 7bit ASCII 文字以外の文字は全てエスケープされます。
no-ctrl
–
ロギングされる文字列は改行文字で分割され、
印刷可能な文字以外は全てエスケープされます。
raw
–
全ての文字はシステムロガーに変更せずに渡されます。
改行文字で分割されることもありません(PHP 7.3 より前の振る舞いと同等です)
このディレクティブは、Windows ではサポートされていません。注意:
raw
フィルタタイプは、PHP 7.3.8 および PHP 7.4.0 以降で使えます。
syslog.ident
string
すべての文字列の先頭に追加する識別用文字列を指定します。 error_log が "syslog" の場合にだけ有効です。