## 実行時設定

php.ini の設定により動作が変化します。

エラーおよびロギング設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
error_reporting | NULL | `INI_ALL` |
fatal_error_backtraces | "1" | `INI_ALL` | PHP 8.5.0 以降で有効です。
display_errors | "1" | `INI_ALL` |
display_startup_errors | "1" | `INI_ALL` | PHP 8.0.0 より前のバージョンでは、デフォルト値は `"0"` でした。
log_errors | "0" | `INI_ALL` |
log_errors_max_len | "1024" | `INI_ALL` | PHP 8.0.0 以降は意味をなさなくなり、PHP 8.1.0 で削除されました。
ignore_repeated_errors | "0" | `INI_ALL` |
ignore_repeated_source | "0" | `INI_ALL` |
report_memleaks | "1" | `INI_ALL` | PHP 8.5.0 以降で非推奨です。
track_errors | "0" | `INI_ALL` | PHP 7.2.0 以降で非推奨になり、PHP 8.0.0 で削除されました。
html_errors | "1" | `INI_ALL` |
xmlrpc_errors | "0" | `INI_SYSTEM` |
xmlrpc_error_number | "0" | `INI_ALL` |
docref_root | "" | `INI_ALL` |
docref_ext | "" | `INI_ALL` |
error_prepend_string | NULL | `INI_ALL` |
error_append_string | NULL | `INI_ALL` |
error_log | NULL | `INI_ALL` |
error_log_mode | 0o644 | `INI_ALL` | PHP 8.2.0 以降で有効です。
syslog.facility | "LOG_USER" | `INI_SYSTEM` | PHP 7.3.0 以降で有効です。
syslog.filter | "no-ctrl" | `INI_ALL` | PHP 7.3.0 以降で有効です。
syslog.ident | "php" | `INI_SYSTEM` | PHP 7.3.0 以降で有効です。

INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。

以下に設定ディレクティブの簡単な説明を示します。

`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` だけではなくすべてのエラーを含める) のような数を指定するようにしましょう。 これは現状の全ビットに対応した上で、かつ値が将来追加された場合にも対応できます。

`fatal_error_backtraces` bool
  致命的なエラーにバックトレースを含めるかどうかを制御します。 致命的なエラーとは、`E_ERROR`、 `E_CORE_ERROR`、`E_COMPILE_ERROR`、 `E_USER_ERROR`、 `E_RECOVERABLE_ERROR`、および `E_PARSE` のことです。
`display_errors` string

  エラーを出力の一部として画面に表示するか、ユーザーから隠すかを決めます。

  - `Off` - エラーを一切表示しません。
  - `On` または `stdout` - エラーを `stdout` に表示します。これがデフォルトです。
  - `stderr` - エラーを `stderr` に表示します。`CLI`、`phpdbg`、`CGI` の SAPI でのみ有効です。
  同梱されている `php.ini-development` ではこれを `On` に、`php.ini-production` では `Off` に設定しています。

  > 注意: 開発をサポートする仕組みであり、本番のシステムでは 使用すべきではありません (例えばインターネットに接続されたシステムなど)。

  > 注意:

  > 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` を有効にしている場合のみです。
  警告

  この機能は PHP 8.5.0 で 非推奨 になります。この機能に頼らないことを強く推奨します。

`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() も参照ください。

`error_log_mode` int

  error_log で設定されたファイルのモード(パーミッション)。

`syslog.facility` string

  どの種類のプログラムがメッセージを記録するのかを指定します。 error_log が "syslog" の場合にだけ有効です。

`syslog.filter` string

  記録されたメッセージをフィルタリングするフィルターの種類を指定します。 フィルターで許可された文字はそのまま記録されますが、許可されていない文字は `\x` で始まる十六進表記に変換して記録されます。

  - `all` – ロギングされる文字列は改行文字で分割され、すべての文字は変更せずに渡されます。
  - `ascii` – ロギングされる文字列は改行文字で分割され、 印刷可能な 7bit ASCII 文字以外の文字は全てエスケープされます。
  - `no-ctrl` – ロギングされる文字列は改行文字で分割され、 印刷可能な文字以外は全てエスケープされます。
  - `raw` – 全ての文字はシステムロガーに変更せずに渡されます。 改行文字で分割されることもありません(PHP 7.3 より前の振る舞いと同等です)
  この設定は、error_log を "syslog" に設定し、 syslog() をコールした場合にのみ影響します。

  > 注意:

  > `raw` フィルタタイプは、PHP 7.3.8 および PHP 7.4.0 以降で使えます。

  このディレクティブは、Windows ではサポートされていません。
`syslog.ident` string

  すべての文字列の先頭に追加する識別用文字列を指定します。 error_log が "syslog" の場合にだけ有効です。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open