## コア php.ini ディレクティブに関する説明

このリストには、PHPを設定する際に使用可能なコア php.ini ディレクティブが 含まれています。拡張モジュールにより処理されるディレクティブは、それぞれの 拡張モジュールのドキュメントページにリストと詳細が記述されています。 例えば、セッション用ディレクティブに関する情報は、 セッションのページにあります。

> 注意:

> これらのデフォルト値は、php.ini が読み込まれなかったときに使われるものです。 運用時と開発時では php.ini の値が変わることもあるでしょう。

## 言語オプション

言語およびその他の設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
short_open_tag | "1" | `INI_PERDIR` |
precision | "14" | `INI_ALL` |
serialize_precision | "-1" | `INI_ALL` | PHP 7.1.0 より前は、デフォルト値は 17 でした。
disable_functions | "" | `INI_SYSTEM` のみ |
disable_classes | "" | php.ini のみ | PHP 8.5.0 以降は削除されています。
exit_on_timeout | "" | `INI_ALL` |
expose_php | "1" | php.ini のみ |
hard_timeout | "2" | `INI_SYSTEM` | PHP 7.1.0 以降で利用可能。
zend.exception_ignore_args | "0" | `INI_ALL` | PHP 7.4.0 以降で利用可能。
zend.multibyte | "0" | `INI_ALL` |
zend.script_encoding | NULL | `INI_ALL` |
zend.detect-unicode | NULL | `INI_ALL` |
zend.signal_check | "0" | `INI_SYSTEM` |
zend.assertions | "1" | `INI_ALL` (制限あり) |
zend.exception_string_param_max_len | "15" | `INI_ALL` | PHP 8.0.0 以降で利用可能。

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

`short_open_tag` bool

  PHP タグの短縮型 (`<? ?>`) を使用 可能にするかどうかを設定します。PHPをXMLと組み合わせて用いる 場合は、`<?xml ?>`をファイル中で用 いるためにこのオプションをオフにする必要があります。オンにし た場合にPHPでXMLを出力するには、例えば、次のようにします。 `<?php echo '<?xml version="1.0"?>'; ?>` これをオフにした場合、長い方の形式のタグ (`<?php ?>`)を使用する必要があります。

  > 注意:

  > これは、`<?=` 記法に影響を与えません。常に有効となります。

`precision` int
  浮動小数点数に関して表示される最大桁数を指定します。 `-1` は、数値を丸める際に拡張アルゴリズムを用いることを意味します。
`serialize_precision` int
  浮動小数点数をシリアライズするときに格納する桁数を指定します。 `-1` は、数値を丸める際に拡張アルゴリズムを用いることを意味します。
`expose_php` bool

  PHP がサーバーにインストールされていることを全世界に晒し、PHP のバージョンも HTTP ヘッダに含めます (X-Powered-By: PHP/5.3.7 など)。

`disable_functions` string
  このディレクティブを使うと、特定の関数を無効にすることができます。 関数名の一覧をカンマ区切りで指定します。 PHP 8.0.0 以降では、関数を無効にすると定義を削除しますが、 ユーザーランドで再定義できます。 PHP 8.0.0 より前のバージョンでは、 関数を無効にすると、その関数は呼び出せませんでした。 このディレクティブを使って無効にできるのは、 内部関数 だけです。 ユーザー定義関数 は影響を受けません。 このディレクティブは php.ini で設定しなければなりません。 httpd.conf では設定できません。
  警告

  このディレクティブは迂回可能であり、共有ホスティング環境における 十分なセキュリティ対策とはみなすべきではありません。

`disable_classes` string
  このディレクティブを使うと、特定のクラスを無効にすることができます。 クラス名の一覧をカンマ区切りで指定します。 クラスを無効にすると、クラスのインスタンス化ができなくなります。 このディレクティブを使って無効にできるのは、内部クラスのみです。 ユーザーが定義したクラスは影響を受けません。 このディレクティブは php.ini で設定しなければなりません。 httpd.conf では設定できません。
  警告

  このディレクティブは迂回可能であり、共有ホスティング環境における 十分なセキュリティ対策とはみなすべきではありません。

  警告

  この機能は PHP 8.5.0 で 削除 されました。

`zend.assertions` int
  `1` にすると、アサーションのコードを生成して実行します (開発モード)。 `0` にすると、アサーションのコードは生成しますが実行時にはスキップします (実行しません)。 `-1` にすると、アサーションのコードを生成せず、アサーションのコストがゼロになります (実運用モード)。

  > 注意:

  > 実運用モードで開始したプロセスでは、zend.assertions を実行時に変更することはできません。アサーションのコードが生成されていないからです。

  > 開発モードで開始したプロセスでは、zend.assertions を実行時に `-1` に変更することはできません。

`zend.exception_string_param_max_len` int
  文字列化されたスタックトレース中の、関数の引数の長さの最大値。 `"0"` と `"1000000"` の間でなければいけません。
`hard_timeout` int

  max_execution_time で設定されたタイムアウトに達すると、 PHPランタイムはリソースをgracefulに開放します。 リソースを開放する処理が何らかの原因で止まってしまった場合、 hard_timeout のカウントがここで設定した秒数行われます。 hard_timeout のタイムアウトに達すると、 PHP はgracefulにリソースを開放せずに終了します。 この値を 0 に設定すると、この機能は無効になります。

  PHP が hard timeout で停止すると、 以下のようなメッセージが残るでしょう。

      Fatal error: Maximum execution time of 30+2 seconds exceeded (terminated) in Unknown on line 0

`zend.exception_ignore_args` bool

  例外経由で生成されたスタックトレースから、引数を除外します。

`zend.multibyte` bool

  マルチバイトエンコーディングで書かれたソースファイルをパースできるようにします。 zend.multibyte を有効にしないと、マルチバイト文字データの中に特殊文字を含むエンコーディング (SJIS や BIG5 など) を使えません。 ISO-8859-1 互換のエンコーディングである UTF-8 や EUC などを使う場合は、このオプションは不要です。

  zend.multibyte を有効にしたい場合は、mbstring 拡張モジュールを有効にしなければいけません。

`zend.script_encoding` string

  この値を使うのは、 declare(encoding=...) ディレクティブがスクリプトの先頭に存在しない場合です。 ISO-8859-1 非互換のエンコーディングを使う場合は、 zend.multibyte と zend.script_encoding を両方とも指定する必要があります。

  リテラル文字列は、zend.script_encoding から mbstring.internal_encoding に変換されます。 mb_convert_encoding() が呼ばれたときと同じです。

`zend.detect_unicode` bool

  BOM (Byte Order Mark) を調べ、 ファイルが有効なマルチバイト文字を含むかどうかを確認します。 この検出は、 __halt_compiler() の処理より前に行われます。 Zend Multibyte モードでのみ利用可能です。

`zend.signal_check` bool

  置き換えられたシグナルハンドラを、シャットダウン時にチェックします。

`exit_on_timeout` bool

  これは Apache1 の mod_php だけで使える項目で、PHP の実行タイムアウトが発生したときに Apache の子プロセスを強制終了させます。このタイムアウトがおこると Apache1 の内部で longjmp() がコールされ、その結果としていくつかの拡張モジュールが一貫性を欠く状態になってしまいます。 プロセスを強制終了させることで、未処理のロックやメモリの後始末も行います。

## リソース制限

リソース制限
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
memory_limit | "128M" | `INI_ALL` |

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

`memory_limit` int

  スクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに `-1` を指定してください。

  intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。

max_execution_time も参照ください。

## パフォーマンスチューニング

パフォーマンスチューニング
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
realpath_cache_size | "4M" | `INI_SYSTEM` | PHP 7.0.16 および 7.1.2 より前のバージョンでは、 デフォルト値は `"16K"` でした。
realpath_cache_ttl | "120" | `INI_SYSTEM` |

> 注意:

> open_basedir を使用すると、 realpath キャッシュが disable にされます。

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

`realpath_cache_size` int

  PHP が使用する realpath キャッシュの大きさを設定します。 PHP で大量にファイルをオープンする際に、 この値を大きくすることによってファイル操作のパフォーマンスを 向上させます。

  このサイズが表すのは、格納するパス文字列の総バイト数と、 キャッシュエントリに関連づけるデータのサイズを足したものです。 つまり、長いパスをキャッシュに格納するには、キャッシュのサイズを大きくしなければいけません。 この値を使って、最大何件のパスをキャッシュするのかを制御することはできません。

  キャッシュエントリのデータに必要なサイズは、システムによって変わります。

`realpath_cache_ttl` int

  与えられたファイルやディレクトリについての realpath 情報キャッシュの有効期限を (秒単位で) 設定します。 ファイルを変更することがほとんどない場合は、 この値を大きくすることを検討してください。

## データ処理

データ処理設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
arg_separator.output | "&" | `INI_ALL` |
arg_separator.input | "&" | `INI_SYSTEM`|`INI_PERDIR` |
variables_order | "EGPCS" | `INI_PERDIR` |
request_order | "" | `INI_PERDIR` |
auto_globals_jit | "1" | `INI_PERDIR` |
register_argc_argv | "1" | `INI_PERDIR` | PHP 8.5.0 以降は非推奨です。
enable_post_data_reading | "1" | `INI_PERDIR` |
post_max_size | "8M" | `INI_PERDIR` |
auto_prepend_file | "" | `INI_PERDIR` |
auto_append_file | "" | `INI_PERDIR` |
default_mimetype | "text/html" | `INI_ALL` |
default_charset | "UTF-8" | `INI_ALL` |
input_encoding | "" | `INI_ALL` |
output_encoding | "" | `INI_ALL` |
internal_encoding | "" | `INI_ALL` |

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

`arg_separator.output` string

  PHPがURLを生成する際にURL引数を区分するために使用されるセパレータ。

`arg_separator.input` string

  入力されたURLを変数にパースする際にPHPが使用するセパレータのリスト。

  > 注意:

  > このディレクティブで指定した全ての文字は、 セパレータとして認識されます!

`variables_order` string

  EGPCS (`E`nvironment (環境変数)、 `G`et、`P`ost、 `C`ookie (クッキー)、そして `S`erver) 変数のパースの順番を設定します。例えば variables_order を `"SP"` に設定すると、PHP は スーパーグローバル $_SERVER および $_POST を作成しますが、 $_ENV、$_GET および $_COOKIE は作成しません。"" に設定すると、一切 スーパーグローバル を設定しません。

  警告

  CGI および FastCGI SAPI の両方で、 $_SERVER にも環境変数の値が格納されます。 つまり、`S` を指定すると、 `ES` と指定したのと同じ意味になります。 これは、`E` が他のどこかで指定されていたとしても同じです。

  > 注意:

  > $_REQUEST の内容や順序も、このディレクティブの影響を受けます。

`request_order` string

  このディレクティブは、PHP が GET 変数や POST 変数そしてクッキー変数を _REQUEST 配列に登録する際の順序を表します。 登録は左から右の順に行い、後から登録した値が古い値を上書きします。

  このディレクティブが設定されていない場合は、variables_order を使用して $_REQUEST を設定します。

  デフォルトの配布状態の php.ini ファイルには、クッキーの `'C'` が含まれていないことに注意しましょう。 セキュリティを考慮したためです。

`auto_globals_jit` bool

  有効にした場合、SERVER、REQUEST および ENV 変数はスクリプトの開始時ではなく、 最初に使用された時 (Just In Time) に作成されるようになります。 これらの変数がスクリプトの中で使用されない場合、 このディレクティブを使用することで性能が向上します。

  警告

  SERVER、REQUEST および ENV 変数の利用チェックはコンパイル時に行われます。 したがって、たとえば 可変変数 で使用した場合は初期化を行いません。

`register_argc_argv` bool
  PHPが変数argvとargcを宣言するかどうかを指定します (これらにはGETの情報が格納されます)。 コマンドライン も参照ください。
  警告

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

  > 注意: CLI 以外の SAPI において、クエリ文字列から `$_SERVER['argc']` および `$_SERVER['argv']` を導出する挙動は非推奨になりました。 `register_argc_argv=0` を設定し、 その使い方が安全であることを確認した上で、 $_GET または `$_SERVER['QUERY_STRING']` のいずれかに切り替えて情報を取得するようにしてください。

`enable_post_data_reading` bool
  このオプションを無効にすると、$_POST や $_FILES に値が入らなくなります。 リクエストボディは php://input に残ったままになり、 手動で読み取るか request_parse_body() でパースして取得できます。 これは、リクエストをプロキシしたり POST データを処理する際のメモリ消費量を抑えたりする際に有用です。
`post_max_size` int
  POSTデータに許可される最大サイズを設定します。この設定は、ファ イルアップロードにも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。 一般的に memory_limit は、 `post_max_size`よりも大きく する必要があります。 intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。 POSTデータの大きさが、post_max_sizeより大きい場合、 $_POST と $_FILES スーパーグローバル は空になります。この事象は、いくつかの方法で検出することができます。 例えば、$_GET 変数をデータを `<form action="edit.php?processed=1">`のように 処理するスクリプトに渡し、 $_GET['processed'] が設定されているかどうかを 確認する方法があります。

  > 注意:

  > PHP では、バイト値を表すショートカット K (kilo)、M (mega) および G (giga) を使用することができます。 これらを使用した場合、PHP が規約にしたがって自動的に値を判断します。 32 ビット符号付き整数の最大値を上回る値を指定しないように注意しましょう (32 ビットシステムを使用している場合)。 そのようなことをすると、スクリプトの実行が失敗します。

  `post_max_size` の変更履歴
  バージョン | 説明
  --- | ---
  5.3.4 | コンテンツタイプが application/x-www-form-urlencoded であったり、あるいは PHP に登録されていないものであった場合は、 `post_max_size` = 0 にしても上限を無効にできなくなりました。
  5.3.2 , 5.2.12 | `post_max_size` を 0 にすることで、サイズを無制限にできるようになりました。

`auto_prepend_file` string

  メインファイルの前に自動的に付加されるファイルの名前を指定します。 このファイルは、require 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。

  特別な値 `none` を指 定すると、ファイルを前に追加する機能は無効となります。

`auto_append_file` string

  メインファイルの後に自動的に追加されるファイルの名前を指定します。 このファイルは、require 関数のコール時と同様に読み込まれます。 このため、include_path が使用されます。

  `none` を値として 指定するとこの自動付加機能はオフとなります。

  > 注意: スクリプトが exit() で終了する場合、 この自動付加機能は使用されません 。

`default_mimetype` string

  デフォルトでは、PHP はメディアタイプを Content-Type ヘッダで出力します。 これを無効にするには、ここに空文字列を設定しましょう。

  PHP のデフォルトのメディアタイプは text/html です。

`default_charset` string

  "UTF-8" がデフォルトの値です。 htmlentities() や html_entity_decode() そして htmlspecialchars() で `encoding` パラメータを省略した場合は、このデフォルト値を利用します。 また、`default_charset` の値は、 iconv 関数で `iconv.input_encoding`、 `iconv.output_encoding`、 `iconv.internal_encoding` が未設定の場合や、 mbstring 関数で `mbstring.http_input` `mbstring.http_output` `mbstring.internal_encoding` が未設定の場合のデフォルトとしても用いられます。

  すべてのバージョンの PHP は、PHP から送信する Content-Type ヘッダのデフォルト値としてこれを使います。 ただし、header() で上書きされている場合は別です。

  `default_charset` に空文字列を指定することは、おすすめしません。

`input_encoding` string

  この設定は、mbstring や iconv などのマルチバイトモジュールが使うものです。デフォルトは空文字列です。

`output_encoding` string

  この設定は、mbstring や iconv などのマルチバイトモジュールが使うものです。デフォルトは空文字列です。

`internal_encoding` string

  この設定は、mbstring や iconv などのマルチバイトモジュールが使うものです。デフォルトは空文字列です。 空文字列を指定した場合は、 default_charset を利用します。

## パスおよびディレクトリ

パスおよびディレクトリ設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
include_path | ".;/path/to/php/pear" | `INI_ALL` |
open_basedir | NULL | `INI_ALL` |
doc_root | NULL | `INI_SYSTEM` |
user_dir | NULL | `INI_SYSTEM` |
user_ini.cache_ttl | "300" | `INI_SYSTEM` |
user_ini.filename | ".user.ini" | `INI_SYSTEM` |
extension_dir | "/path/to/php" | `INI_SYSTEM` |
extension | NULL | php.ini のみ |
zend_extension | NULL | php.ini のみ |
cgi.check_shebang_line | "1" | `INI_SYSTEM` |
cgi.discard_path | "0" | `INI_SYSTEM` |
cgi.fix_pathinfo | "1" | `INI_SYSTEM` |
cgi.force_redirect | "1" | `INI_SYSTEM` |
cgi.nph | "0" | `INI_SYSTEM` |
cgi.redirect_status_env | NULL | `INI_SYSTEM` |
cgi.rfc2616_headers | "0" | `INI_ALL` |
fastcgi.impersonate | "0" | `INI_SYSTEM` |
fastcgi.logging | "1" | `INI_SYSTEM` |

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

`include_path` string

  require、include、 fopen()、file()、 readfile() および file_get_contents() 関数がファイルを 探すディレクトリのリストを指定します。フォーマットは、システ ムの環境変数 PATHと同じです。つまり、UNIXでは コロンで、Windowsではセミコロンで区切ったディレクトリのリスト で指定します。

  PHP は、インクルードするファイルを探す際に インクルードパスの各エントリを個別に調べます。 まず最初のパスを調べ、見つからなければ次のパスを調べ、…… というように、ファイルが見つかるか `E_WARNING` あるいは `E_ERROR` が発生するまで続けます。インクルードパスを実行時に変更したり設定したりするには set_include_path() を使用します。

  例1 Unix include_path

      include_path=".:/php/includes"

  例2 Windows include_path

      include_path=".;c:\php\includes"

  インクルードパスに `.` (カレントディレクトリ) を指定すると、相対パス指定によるインクルードができるようになります。 しかし、インクルードのたびに毎回 PHP にカレントディレクトリをチェックさせるよりは、 明示的に `include './file'` を指定したほうが効率的です。

  > 注意:

  > `ENV` 変数は .ini ファイルの中でもアクセスできます。 たとえば、ホームディレクトリを参照するときに `${LOGIN}` や `${USER}` が使えます。

  > 環境変数はサーバー API の種類によって異なるので、この環境も異なることがあります。

  例3 Unix include_path で環境変数 ${USER} を使う例

      include_path = ".:${USER}/pear/php"

`open_basedir` string

  PHP からアクセスできるファイルを、指定したディレクトリツリーに限定します。 ファイル自身も含みます。

  スクリプトから include や fopen() などでファイルシステムにアクセスしようとしたときに、そのファイルの場所をチェックします。 ファイルが指定したディレクトリツリーの外にある場合は、PHP はそのファイルへのアクセスを拒否します。 シンボリックリンクの解決も行うので、 シンボリックリンクでこの制限を回避することはできません。 存在しないファイルへのシンボリックリンクは解決できないので、 ファイル名を open_basedir と比較します。

  open_basedir は、ファイルシステム関数以外の挙動にも影響を及ぼします。 たとえば `MySQL` の設定で `mysqlnd` ドライバーを使うようにしている場合に、 `LOAD DATA INFILE` は open_basedir の影響を受けます。 PHP の拡張モジュールの多くが、`open_basedir` をこのように利用しています。

  特別な値 `.` は、 スクリプトの作業ディレクトリを表します。これをベースディレクトリとすることもできますが、 少し危険です。スクリプトの作業ディレクトリは chdir() で容易に変更できるからです。

  httpd.conf で、(たとえばバーチャルホスト単位で) open_basedir を無効にすることができます。 その他の設定ディレクティブの場合と 同様に "`php_admin_value open_basedir none`" のようにします。

  Windows では、ディレクトリの区切りはセミコロンとなります。 その他のシステムでは、コロンで区切ります。Apache モジュールでは、 親ディレクトリからの open_basedir パスを自動的に継承します。

  open_basedir で指定する制約は、 ディレクトリ名となります。プレフィックスではありません。

  デフォルトでは、すべてのファイルを開くことができます。

  > 注意: open_basedir の設定を実行時に厳しくすることができます。 これは、open_basedir が php.ini で `/www/` と設定されているときに、スクリプト内で ini_set() を使って設定を厳しくして `/www/tmp/` のようにできるということです。 複数のディレクトリを指定するときには、定数 `PATH_SEPARATOR` を使えば OS に依存しない記述ができます。 PHP 8.3.0 以降では、ini_set() を使って実行時に open_basedir の値を設定する場合、 親ディレクトリ (`..`) を含むパスを受け入れなくなりました。

  > 注意:

  > open_basedir を使用すると、realpath_cache_sizeは `0` に設定され、結果として realpath キャッシュは disable にされます。

  警告

  `open_basedir` は、追加のセキュリティ機構でしかありません。 つまり、広範囲に適用できるものでは決してないため、 セキュリティを高める必要がある際にそれだけに依存してはいけません。

`doc_root` string

  サーバーにおけるPHPの"ルートディレクトリ"です。この値は空で無 い場合のみ使用されます。 PHPがFORCE_REDIRECTを指定してコンパイルされていない場合、 (IIS以外の)WebサーバーのもとでCGIとしてPHPを実行する際には、 doc_rootを指定するべきです。 他の方法としては、後述の cgi.force_redirect 設定の使用があります。

`user_ini.cache_ttl` int

`user_ini.filename` string

`user_dir` string

  PHPファイル用にユーザーのホームディレクトリ として使用する基本ディレクトリの名前。例えば、 `public_html` となります。

`extension_dir` string

  動的にロード可能な拡張モジュールを置くディレクトリを 指定します。 絶対パスを指定することを推奨します。 enable_dl と dl() も参照ください。

`extension` string

  PHP の開始時に、どの動的ロード可能な拡張モジュールをロードするかを指定します。

`zend_extension` string

  PHP の起動時に読み込む動的読み込み可能な Zend 拡張モジュール (たとえば XDebug) の名前。

`cgi.check_shebang_line` bool

  CGI 版の PHP が、実行するスクリプトの先頭にある `#!` から始まる行 (shebang) をチェックするかどうかを指定します。 同じスクリプトをスタンドアロンと PHP CGI 経由の両方で使用したい場合などに、 この行が必要になるでしょう。このディレクティブを on にしておくと、 CGI 版の PHP はこの行の内容を読み飛ばすようになります。

`cgi.discard_path` bool

  これを有効にすると、PHP CGI のバイナリを web ルートのツリーの外部に配置できるようになります。 これで、.htaccess のセキュリティをくぐり抜けてアクセスされる心配がなくなります。

`cgi.fix_pathinfo` bool

  本来の `PATH_INFO`/`PATH_TRANSLATED` サポートをCGIで提供します。 PHPの以前の動作は、 `SCRIPT_FILENAME`に`PATH_TRANSLATED`を設定するというもので、 `PATH_INFO`の定義を理解していませんんでした。 `PATH_INFO`に関する詳細については、CGIの仕様を参照ください。 このオプションを`1`にすることにより、 PHP CGIはこのパスを仕様にあうように修正します。 ゼロとすると、 PHPは以前と同様に動作します。これは、デフォルトでオンになっています。 `PATH_TRANSLATED`ではなく、`SCRIPT_FILENAME`を使用するようにスクリプト を修正する必要があります。

`cgi.force_redirect` bool

  cgi.force_redirect は、ほとんどのWebサーバーのもとで CGI として PHP を実行する際のセキュリティを確保するために必要です。 未定義のままの場合、PHPはデフォルトでこれを on にします。 これを off にする時は、自己責任 の下に 行なってください。

  > 注意:

  > Windowsユーザー: IIS を使う場合は、このオプションは 必ず off にしなければなりません。 OmniHTTPD や Xitami の場合も同様です。

`cgi.nph` bool

  cgi.nph を有効にすると、すべてのリクエストに対して cgi がステータスコード 200 を返すように強制します。

`cgi.redirect_status_env` string

  cgi.force_redirect を on にし、Apache または Netscape (iPlanet) Webサーバーのもとで実行していない場合、 実行を継続して良いかどうかをPHPが判断するために 環境変数の名前を設定する必要があるかもしれません。

  > 注意:

  > この変数を設定することにより、セキュリティ上の問題を発生する 場合があります。行うことのリスクをまず把握してください。

`cgi.rfc2616_headers` bool

  PHP に、HTTP レスポンスを返す際に、どの形式のヘッダーを使うか 指示します。このオプションを無効にすると、0 にセットした場合は、Apache やその他の web サーバーで サポートされている » RFC 3875 Status: ヘッダーを送信します。このオプションを有効にすると、 PHP は » RFC 2616 の仕様に適合した形式のヘッダーを送信します。

  このオプションを有効にして、かつ PHP を CGI 環境 (PHP-FPM など) で動かしている場合は、 標準の RFC 2616 形式の HTTP ステータスレスポンスヘッダーを使ってはいけません。そのかわりに RFC 3875 形式にする必要があります。つまり、 header("HTTP/1.0 404 Not found"); ではなく header("Status: 404 Not Found"); にしなければいけないということです。

  よくわからないときは、この値は無効のままにしておきましょう。

`fastcgi.impersonate` bool

  IIS (または WINNT ベースの OS) のもとでの FastCGI は、 クライアントをコールする際にセキュリティトークンを 匿名化する機能をサポートしています。 これにより、IIS がリクエストを処理するセキュリティコンテキストを 定義できるようになります。Apacheのもとで実行される mod_fastcgi は現在 (2002/03/17) この機能をサポートしていません。 IIS のもとで実行するには、有効にしておいてください。 デフォルトは無効になっています。

`fastcgi.logging` bool

  FastCGI 使用中の SAPI ロギングを有効にします。 デフォルトはロギングが有効となっています。

## ファイルアップロード

ファイルアップロード設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
file_uploads | "1" | `INI_SYSTEM` |
upload_tmp_dir | NULL | `INI_SYSTEM` |
max_input_nesting_level | 64 | `INI_PERDIR` |
max_input_vars | 1000 | `INI_PERDIR` |
upload_max_filesize | "2M" | `INI_PERDIR` |
max_file_uploads | 20 | `INI_PERDIR` |

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

`file_uploads` bool

  HTTP ファイルアップロード を有効とするかどうか。 upload_max_filesize, upload_tmp_dir, post_max_size ディレクティブも参照ください。

`upload_tmp_dir` string

  ファイルアップロード時にファイル保存に用いるテンポラリディレクトリ。 PHPの実行ユーザーが書きこみ可能である必要が あります。指定されない場合、PHPはシステムのデフォルト設定を 使用します。

  ここで指定したディレクトリに書き込むことができない場合、 PHP はかわりにシステムのデフォルトテンポラリディレクトリを使用します。 open_basedir が on の場合は、システムのデフォルトテンポラリディレクトリへのアップロードを許可しておかなければなりません。

`upload_max_filesize` int

  アップロードされるファイルの最大サイズ。

  post_max_size には、 この値より大きな値を指定しなければいけません。

  intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
`max_file_uploads` int

  同時にアップロードできるファイルの最大数。 何もファイルを指定せずに送信されたアップロードフィールドは ファイル数に数えられません。

## SQL全般

SQL全般の設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
sql.safe_mode | "0" | `INI_SYSTEM` | PHP 7.2.0 以降は削除されています。

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

`sql.safe_mode` bool

  オンにすると、デフォルト値が指定されているデータベース接続関数は、 引数で指定された値よりもデフォルト値を優先して使用します。 デフォルト値の詳細については、関連するデータベースのドキュメントを参照ください。

  警告

  この機能は PHP 7.2.0 で 削除 されました。

## Windows のみ

Windows 特有の設定オプション
名前 | デフォルト | 変更可能 | 変更履歴
--- | --- | --- | ---
windows.show_crt_warning | "0" | `INI_ALL` |

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

`windows.show_crt_warning` bool

  このディレクティブを有効にすると、Windows CRT の警告を表示します。

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