コア php.ini
ディレクティブに関する説明
このリストには、PHPを設定する際に使用可能なコア php.ini
ディレクティブが
含まれています。拡張モジュールにより処理されるディレクティブは、それぞれの
拡張モジュールのドキュメントページにリストと詳細が記述されています。
例えば、セッション用ディレクティブに関する情報は、
セッションのページにあります。
注意:
これらのデフォルト値は、
php.ini
が読み込まれなかったときに使われるものです。 運用時と開発時ではphp.ini
の値が変わることもあるでしょう。
言語オプション
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
short_open_tag | "1" | PHP_INI_PERDIR | |
asp_tags | "0" | PHP_INI_PERDIR | PHP 7.0.0 で削除 |
precision | "14" | PHP_INI_ALL | |
serialize_precision | "-1" | PHP_INI_ALL | PHP 5.3.6 より前は、デフォルト値は 100 でした。
PHP 7.1.0 より前は、デフォルト値は 17 でした。 |
y2k_compliance | "1" | PHP_INI_ALL | PHP 5.4.0 で削除。 |
allow_call_time_pass_reference | "1" | PHP_INI_PERDIR | PHP 5.4.0 で削除。 |
disable_functions | "" | PHP_INI_SYSTEM のみ | |
disable_classes | "" | php.ini のみ
|
|
exit_on_timeout | "" | PHP_INI_ALL | PHP 5.3.0 以降で利用可能。 |
expose_php | "1" | php.ini のみ
|
|
hard_timeout | "2" | PHP_INI_SYSTEM | PHP 7.1.0 以降で利用可能。 |
zend.exception_ignore_args | "0" | PHP_INI_ALL | PHP 7.4.0 以降で利用可能。 |
zend.multibyte | "0" | PHP_INI_ALL | PHP 5.4.0 以降で利用可能。 |
zend.script_encoding | NULL | PHP_INI_ALL | PHP 5.4.0 以降で利用可能。 |
zend.detect-unicode | NULL | PHP_INI_ALL | Available since PHP 5.4.0 |
zend.signal_check | "0" | PHP_INI_SYSTEM | PHP 5.4.0 以降で利用可能。 |
zend.assertions | "1" | PHP_INI_ALL (制限あり) | PHP 7.0.0 以降で利用可能。 |
zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | PHP 5.3.0 で削除。 |
detect_unicode | "1" | PHP_INI_ALL | PHP 5.1.0 以降で利用可能。PHP 5.4.0 で名前を zend.detect-unicode に変更。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
short_open_tag
boolPHP タグの短縮型 (
<? ?>
) を使用 可能にするかどうかを設定します。PHPをXMLと組み合わせて用いる 場合は、<?xml ?>
をファイル中で用 いるためにこのオプションをオフにする必要があります。オンにし た場合にPHPでXMLを出力するには、例えば、次のようにします。<?php echo '<?xml version="1.0"?>'; ?>
これをオフにした場合、長い方の形式のタグ (<?php ?>
)を使用する必要があります。注意:
PHP 5.4.0 より前のバージョンでは、 このディレクティブは、
<? echo
と同じ形式の ショートカット<?=
も影響を受けます。 このショートカットを使用するには、short_open_tag
をonとする 必要があります。 PHP 5.4.0 以降では、<?=
は常に有効となります。asp_tags
bool-
ASP 形式のタグ <% %> を通常のタグ <?php ?>
に加えて使用可能にします。
このスイッチにより、出力の短縮形 <%= $value %> も
使用できるようになります。
詳細な情報は、
HTML からのエスケープを参照ください。
asp_tags
の変更履歴バージョン 説明 7.0.0 PHP から削除されました。 precision
int-
浮動小数点数に関して表示される最大桁数を指定します。
-1
は、数値を丸める際に拡張アルゴリズムを用いることを意味します。 serialize_precision
int-
浮動小数点数をシリアライズするときに格納する桁数を指定します。
-1
は、数値を丸める際に拡張アルゴリズムを用いることを意味します。 y2k_compliance
bool- 2000年問題対応を強制します (2000年問題非対応のブラウザにおいて、 問題が発生する可能性があります)。
allow_call_time_pass_reference
bool関数のコール時に引数が参照で渡された場合に、警告するかどうかを設定します。 推奨される方法は、関数宣言時に参照渡しとするべき引数を指定することです。 将来のバージョンでの動作を保障するために、 このオプションを off とし、 スクリプトがこの状態で正しく動作することを確認することが推奨されます (この機能を使用する度に警告が発生します)。
関数コール時に参照で引数を渡すことは、コードの明解さを損なうために 廃止されています。関数は、引数が参照渡しであると宣言されて いない場合でも、文書化されていない方法で、その引数を修正できます。 副作用を回避するためには、どの引数を参照渡しとするかを関数宣言でのみ 指定すると良いでしょう。
参照に関する説明も参照ください。
allow_call_time_pass_reference
の変更履歴バージョン 説明 5.4.0 PHP から削除されました。 5.3.0 E_DEPRECATED
レベルのエラーが発生するようになりました。5.0.0 非推奨となり、 E_COMPILE_WARNING
レベルのエラーが発生するようになりました。expose_php
boolPHP がサーバーにインストールされていることを全世界に晒し、PHP のバージョンも HTTP ヘッダに含めます (X-Powered-By: PHP/5.3.7 など)。PHP 5.5.0 より前のバージョンでは PHP のロゴの guid も公開されるので、PHP を有効にしたサイトの URL にそれを追加すると guids are also exposed, thus appending them to the URL of a PHP enabled site (例: » https://www.php.net/?=PHPE9568F34-D428-11d2-A769-00AA001ACF42) ロゴが表示されるようになります。この設定は phpinfo() の出力にも影響し、無効にすると PHP のロゴやクレジット情報が表示されなくなっていました。
注意:
PHP 5.5.0 からは、これらの guid や php_logo_guid() 関数が削除され、 guid の代わりに URI を使うようになりました。したがって、URL の後に guid を追加して PHP のロゴにアクセスするという方法は、使えなくなります。 同様に、
expose_php
をオフにしても、 phpinfo() における PHP ロゴの表示には影響しなくなります。php_logo_guid() および phpcredits() も参照ください。
disable_functions
stringこのディレクティブを使うと、特定の関数を無効にすることができます。 関数名の一覧をカンマ区切りで指定します。
このディレクティブで無効にできるのは 内部の関数だけです。 ユーザーが定義した関数 は影響を受けません。
このディレクティブは
php.ini
で設定しなければなりません。 たとえばこれをhttpd.conf
で設定することはできません。disable_classes
string-
このディレクティブを使うと、特定のクラスを無効にすることができます。
クラス名の一覧をカンマ区切りで指定します。
このディレクティブは
php.ini
で設定しなければなりません。 たとえばこれをhttpd.conf
で設定することはできません。 zend.assertions
int1
にすると、アサーションのコードを生成して実行します (開発モード)。0
にすると、アサーションのコードは生成しますが実行時にはスキップします (実行しません)。-1
にすると、アサーションのコードを生成せず、アサーションのコストがゼロになります (実運用モード)。注意:
実運用モードで開始したプロセスでは、zend.assertions を実行時に変更することはできません。アサーションのコードが生成されていないからです。
開発モードで開始したプロセスでは、zend.assertions を実行時に
-1
に変更することはできません。zend.ze1_compatibility_mode
boolZend Engine 1 (PHP 4) との互換モードを有効にします。 この設定は、オブジェクトのコピー、キャスト (プロパティを 保持しないオブジェクトが
false
あるいは 0 のいずれになるか)、 そして 比較 に影響を与えます。このモードの場合、オブジェクトを渡す際の デフォルトの方法は、参照渡しではなく値渡しとなります。PHP 4 から PHP 5 への移行というタイトルの セクションも参照してください。
警告
この機能は 非推奨 で、 PHP 5.3.0 以降では 削除 されました。
hard_timeout
intzend.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_enconding から mbstring.internal_encoding に変換されます。 mb_convert_encoding() が呼ばれたときと同じです。
zend.detect_unicode
boolBOM (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" | PHP_INI_ALL | PHP 5.2.0 より前は "8M"、PHP 5.2.0 では "16M" |
以下に設定ディレクティブに関する 簡単な説明を示します。
memory_limit
intスクリプトが確保できる最大メモリをバイト数で指定します。この命令は、 正しく書かれていないスクリプトがサーバーのメモリを食いつぶすことを防止するのに役立ちます。 もし、使用可能メモリに制限を設けたくない場合は、 ここに
-1
を指定してください。PHP 5.2.1 より前のバージョンでは、このディレクティブを使うためには、 コンパイル時に configure で --enable-memory-limit を指定しなければなりません。 このコンパイルフラグは、関数 memory_get_usage() および memory_get_peak_usage() を 5.2.1 より前のバージョンで使う際にも必要となります。
intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
max_execution_time も参照ください。
パフォーマンスチューニング
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
realpath_cache_size | "4M" | PHP_INI_SYSTEM | PHP 5.1.0 以降で使用可能。PHP 7.0.16 および 7.1.2 より前のバージョンでは、
デフォルト値は |
realpath_cache_ttl | "120" | PHP_INI_SYSTEM | PHP 5.1.0 以降で使用可能。 |
注意:
open_basedir を使用すると、 realpath キャッシュが disable にされます。
以下に設定ディレクティブに関する 簡単な説明を示します。
realpath_cache_size
intPHP が使用する realpath キャッシュの大きさを設定します。 PHP で大量にファイルをオープンする際に、 この値を大きくすることによってファイル操作のパフォーマンスを 向上させます。
このサイズが表すのは、格納するパス文字列の総バイト数と、 キャッシュエントリに関連づけるデータのサイズを足したものです。 つまり、長いパスをキャッシュに格納するには、キャッシュのサイズを大きくしなければいけません。 この値を使って、最大何件のパスをキャッシュするのかを制御することはできません。
キャッシュエントリのデータに必要なサイズは、システムによって変わります。
realpath_cache_ttl
int与えられたファイルやディレクトリについての realpath 情報キャッシュの有効期限を (秒単位で) 設定します。 ファイルを変更することがほとんどない場合は、 この値を大きくすることを検討してください。
データ処理
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
arg_separator.output | "&" | PHP_INI_ALL | |
arg_separator.input | "&" | PHP_INI_PERDIR | |
variables_order | "EGPCS" | PHP_INI_PERDIR | PHP <= 5.0.5 では PHP_INI_ALL。 |
request_order | "" | PHP_INI_PERDIR | PHP 5.3.0 以降で利用可能 |
auto_globals_jit | "1" | PHP_INI_PERDIR | PHP 5.0.0 以降で利用可能 |
register_globals | "0" | PHP_INI_PERDIR | PHP 5.4.0 で削除。 |
register_argc_argv | "1" | PHP_INI_PERDIR | |
register_long_arrays | "1" | PHP_INI_PERDIR | PHP 5.3.0 で非推奨。PHP 5.4.0 で削除。 |
enable_post_data_reading | "1" | PHP_INI_PERDIR | PHP 5.4.0 以降で利用可能。 |
post_max_size | "8M" | PHP_INI_PERDIR | |
auto_prepend_file | "" | PHP_INI_PERDIR | |
auto_append_file | "" | PHP_INI_PERDIR | |
default_mimetype | "text/html" | PHP_INI_ALL | |
default_charset | "UTF-8" | PHP_INI_ALL | PHP >= 5.6.0 で、デフォルトが "UTF-8" になりました。PHP < 5.6.0 でのデフォルトは空でした。 |
always_populate_raw_post_data | "0" | PHP_INI_PERDIR | PHP 7.0.0 で削除。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
arg_separator.output
stringPHPがURLを生成する際にURL引数を区分するために使用されるセパレータ。
arg_separator.input
string入力されたURLを変数にパースする際にPHPが使用するセパレータのリスト。
注意:
このディレクティブで指定した全ての文字は、 セパレータとして認識されます!
variables_order
stringEGPCS (
E
nvironment (環境変数)、G
et、P
ost、C
ookie (クッキー)、そしてS
erver) 変数のパースの順番を設定します。例えば variables_order を"SP"
に設定すると、PHP は superglobals$_SERVER
および$_POST
を作成しますが、$_ENV
、$_GET
および$_COOKIE
は作成しません。"" に設定すると、一切 superglobals を設定しません。非推奨のディレクティブ register_globals が on になっていると、 variables_order の設定は、
ENV
、GET
、POST
、COOKIE
およびSERVER
の各変数がグローバルスコープに取り込まれる順番も左右します。 つまり、たとえば variables_order が"EGPCS"
で register_globals が有効になっていたとすると、$_GET['action']
と$_POST['action']
が両方設定された場合の$action
の値は$_POST['action']
の内容になります。 これは、この例におけるディレクティブの設定でP
がG
より後になっているからです。警告
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) に作成されるようになります。 これらの変数がスクリプトの中で使用されない場合、 このディレクティブを使用することで性能が向上します。
このディレクティブを有効にするには、PHP ディレクティブ register_globals, register_long_arrays, および register_argc_argv を無効にしておく必要があります。PHP 5.1.3 以降では、 register_argc_argv を無効にする必要はありません。
警告
SERVER、REQUEST および ENV 変数の利用チェックはコンパイル時に行われます。 したがって、たとえば 可変変数 で使用した場合は初期化を行いません。
register_globals
boolEGPCS(Environment, GET, POST, Cookie, Server)変数を グローバル変数として登録するかどうかを指定します。
» PHP 4.2.0 以降、 このディレクティブのデフォルトは、offです。
関連する情報については、セキュリティの章の register_globalsの使用 を参照してください。
register_globals
は、 (ini_set()で)実行時に設定することができないことに 注意してください。しかし、前記のようにホストが許可している場合には、.htaccess
を使用することができます。.htaccess
エントリの例を以下に示します。php_flag register_globals off
注意:
register_globals
は、 variables_order ディレクティブの影響を受けます。警告
この機能は PHP 5.3.0 で 非推奨となり、 PHP 5.4.0 で削除されました。
register_argc_argv
bool- PHPが変数argvとargcを宣言するかどうかを指定します (これらにはGETの情報が格納されます)。 コマンドライン も参照ください。
register_long_arrays
bool-
PHP が、
$HTTP_*_VARS
のような古い長い 定義済みの変数 を登録するかどうかを指定します。 On (デフォルト) とした場合、$HTTP_GET_VARS
のような 定義済みの長い PHP 変数が定義されます。 これらの変数を使用していない場合には、性能面からこのオプションを off とすることが推奨されています。 かわりに$_GET
のようなスーパーグローバル変数を使用してください。 このディレクティブは PHP 5.0.0 で利用可能となりました。警告
この機能は PHP 5.3.0 で 非推奨となり、 PHP 5.4.0 で削除されました。
enable_post_data_reading
bool-
このオプションを無効にすると、
$_POST
や$_FILES
に値が入らなくなります。 この場合、投稿されたデータを読むには、ストリームラッパー php://input を使う以外の方法はなくなります。 これは、リクエストをプロキシしたり POST データを処理する際のメモリ消費量を抑えたりする際に有用です。 post_max_size
intPOSTデータに許可される最大サイズを設定します。この設定は、ファ イルアップロードにも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。 一般的に memory_limit は、
post_max_size
よりも大きく する必要があります。 intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。 POSTデータの大きさが、post_max_sizeより大きい場合、$_POST
と$_FILES
superglobals は空になります。この事象は、いくつかの方法で検出することができます。 例えば、$_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
stringPHP 5.6.0 以降は "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
stringPHP 5.6.0 以降で利用可能です。 この設定は、mbstring や iconv などのマルチバイトモジュールが使うものです。デフォルトは空文字列です。
output_encoding
stringPHP 5.6.0 以降で利用可能です。 この設定は、mbstring や iconv などのマルチバイトモジュールが使うものです。デフォルトは空文字列です。
internal_encoding
stringPHP 5.6.0 以降で利用可能です。 この設定は、mbstring や iconv などのマルチバイトモジュールが使うものです。デフォルトは空文字列です。 空文字列を指定した場合は、 default_charset を利用します。
always_populate_raw_post_data
mixed警告
この機能は PHP 5.6.0 で 非推奨 となり、 PHP 7.0.0 で 削除 されました。
true
に設定すると、PHP は常に$HTTP_RAW_POST_DATA
にアクセス可能とします。 この変数には生の POST データが格納されています。 指定しなかった場合は、 データの MIME 型が判別できない場合のみこの変数にアクセス可能となります。生の POST データにアクセスする方法としては php://input のほうが推奨されます。
$HTTP_RAW_POST_DATA
は、PHP 5.6.0 以降で非推奨となります。always_populate_raw_post_data
を-1
にすると、将来のバージョンでの PHP の挙動を事前に体験できます。 つまり、$HTTP_RAW_POST_DATA
がはじめから定義されていない状態のことです。設定がどうであろうと、
enctype="multipart/form-data"
の場合は$HTTP_RAW_POST_DATA
は使えません。
magic_quotes_gpc, magic-quotes-runtime, および magic_quotes_sybase も参照ください。
パスおよびディレクトリ
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
include_path | ".;/path/to/php/pear" | PHP_INI_ALL | |
open_basedir | NULL | PHP_INI_ALL | PHP < 5.3.0 では PHP_INI_SYSTEM |
doc_root | NULL | PHP_INI_SYSTEM | |
user_dir | NULL | PHP_INI_SYSTEM | |
user_ini.cache_ttl | "300" | PHP_INI_SYSTEM | PHP 5.3.0 以降で利用可能。 |
user_ini.filename | ".user.ini" | PHP_INI_SYSTEM | PHP 5.3.0 以降で利用可能。 |
extension_dir | "/path/to/php" | PHP_INI_SYSTEM | |
extension | NULL | php.ini のみ
|
|
zend_extension | NULL | php.ini のみ
|
|
zend_extension_debug | NULL | php.ini のみ
|
PHP 5.3.0 より前のバージョンで利用可能 |
zend_extension_debug_ts | NULL | php.ini のみ
|
PHP 5.3.0 より前のバージョンで利用可能 |
zend_extension_ts | NULL | php.ini のみ
|
PHP 5.3.0 より前のバージョンで利用可能 |
cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | PHP 5.2.0 以降で利用可能。 |
cgi.discard_path | "0" | PHP_INI_SYSTEM | PHP 5.3.0 以降で利用可能。 |
cgi.fix_pathinfo | "1" | PHP_INI_SYSTEM | PHP 5.2.1 までは PHP_INI_ALL でした。 |
cgi.force_redirect | "1" | PHP_INI_SYSTEM | PHP 5.2.1 までは PHP_INI_ALL でした。 |
cgi.nph | "0" | PHP_INI_SYSTEM | PHP 5.3.0 以降で利用可能。 |
cgi.redirect_status_env | NULL | PHP_INI_SYSTEM | PHP 5.2.1 までは PHP_INI_ALL でした。 |
cgi.rfc2616_headers | "0" | PHP_INI_ALL | |
fastcgi.impersonate | "0" | PHP_INI_SYSTEM | PHP 5.2.1 までは PHP_INI_ALL でした。 |
fastcgi.logging | "1" | PHP_INI_SYSTEM | PHP 5.2.1 までは PHP_INI_ALL でした。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
include_path
stringrequire、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
stringPHP からアクセスできるファイルを、指定したディレクトリツリーに限定します。 ファイル自身も含みます。このディレクティブは、セーフモードのオン/オフ には影響を受けません。
スクリプトから 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 で指定する制約は、PHP 5.2.6 および 5.3.4 以降はディレクトリ名となります。それより前のバージョンでは、この制約はプレフィックスという扱いでした。 つまり、"
open_basedir = /dir/incl
" とした場合に、仮に "/dir/include
" や "/dir/incls
" が存在すればそこにもアクセスできていたということです。 指定したディレクトリへのアクセスのみに制限したい場合は、最後にスラッシュをつけてopen_basedir = /dir/incl/
のようにします。デフォルトでは、すべてのファイルを開くことができます。
注意:
PHP 5.3.0 以降では、open_basedir の設定を実行時に厳しくできるようになりました。 open_basedir が
php.ini
で/www/
と設定されているときに、スクリプト内で ini_set() を使って設定を厳しくして/www/tmp/
のようにできるということです。 複数のディレクトリを指定するときには、定数PATH_SEPARATOR
を使えば OS に依存しない記述ができます。注意:
open_basedir を使用すると、realpath_cache_size は
0
へ設定され、結果として realpath キャッシュは disable にされます。doc_root
stringサーバーにおけるPHPの"ルートディレクトリ"です。この値は空で無 い場合のみ使用されます。 PHPがFORCE_REDIRECTを指定してコンパイルされていない場合、 (IIS以外の)WebサーバーのもとでCGIとしてPHPを実行する際には、 doc_rootを指定するべきです。 他の方法としては、後述の cgi.force_redirect 設定の使用があります。
user_ini.cache_ttl
intuser_ini.filename
stringuser_dir
stringPHPファイル用にユーザーのホームディレクトリ として使用する基本ディレクトリの名前。例えば、
public_html
となります。extension_dir
stringextension
stringPHP の開始時に、どの動的ロード可能な拡張モジュールをロードするかを指定します。
zend_extension
stringPHP の起動時に読み込む動的読み込み可能な Zend 拡張モジュール (たとえば XDebug) の名前。
zend_extension_debug
stringzend_extension の亜種で、デバッグ情報つきでコンパイルされた拡張モジュール用のもの。 PHP 5.3.0 より前のバージョンで利用可能。
zend_extension_debug_ts
stringzend_extension の亜種で、デバッグ情報つきかつスレッドセーフでコンパイルされた拡張モジュール用のもの。 PHP 5.3.0 より前のバージョンで利用可能。
zend_extension_ts
stringzend_extension の亜種で、スレッドセーフでコンパイルされた拡張モジュール用のもの。 PHP 5.3.0 より前のバージョンで利用可能。
cgi.check_shebang_line
boolCGI 版の 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
boolcgi.force_redirect は、ほとんどのWebサーバーのもとで CGI として PHP を実行する際のセキュリティを確保するために必要です。 未定義のままの場合、PHPはデフォルトでこれを on にします。 これを off にする時は、自己責任 の下に 行なってください。
注意:
Windowsユーザー: IIS を使う場合は、このオプションは 必ず off にしなければなりません。 OmniHTTPD や Xitami の場合も同様です。
cgi.nph
boolcgi.nph を有効にすると、すべてのリクエストに対して cgi がステータスコード 200 を返すように強制します。
cgi.redirect_status_env
stringcgi.force_redirect を on にし、Apache または Netscape (iPlanet) Webサーバーのもとで実行していない場合、 実行を継続して良いかどうかをPHPが判断するために 環境変数の名前を設定する必要があるかもしれません。
注意:
この変数を設定することにより、セキュリティ上の問題を発生する 場合があります。行うことのリスクをまず把握してください。
cgi.rfc2616_headers
intPHP に、HTTP レスポンスを返す際に、どの形式のヘッダーを使うか 指示します。0 にセットした場合は、Apache やその他の web サーバーで サポートされている » RFC 3875 Status: ヘッダーを送信します。このオプションの値を 1 にセットした場合は、PHP は » RFC 2616 の仕様に適合した形式のヘッダーを送信します。
このオプションを有効にして、かつ PHP を CGI 環境 (PHP-FPM など) で動かしている場合は、 標準の RFC 2616 形式の HTTP ステータスレスポンスヘッダーを使ってはいけません。そのかわりに RFC 3875 形式にする必要があります。つまり、 header("HTTP/1.0 404 Not found"); ではなく header("Status: 404 Not Found"); にしなければいけないということです。
よくわからないときは、この値は 0 のままにしておきましょう。
fastcgi.impersonate
stringIIS (または WINNT ベースの OS) のもとでの FastCGI は、 クライアントをコールする際にセキュリティトークンを 匿名化する機能をサポートしています。 これにより、IIS がリクエストを処理するセキュリティコンテキストを 定義できるようになります。Apacheのもとで実行される mod_fastcgi は現在 (2002/03/17) この機能をサポートしていません。 IIS のもとで実行するには、1 に設定してください。 デフォルトは 0 です。
fastcgi.logging
boolFastCGI 使用中の SAPI ロギングを有効にします。 デフォルトはロギングが有効となっています。
ファイルアップロード
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
file_uploads | "1" | PHP_INI_SYSTEM | |
upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
max_input_nesting_level | 64 | PHP_INI_PERDIR | PHP 5.3.9 以降で利用可能。 |
max_input_vars | 1000 | PHP_INI_PERDIR | PHP 5.3.9 以降で利用可能。 |
upload_max_filesize | "2M" | PHP_INI_PERDIR | |
max_file_uploads | 20 | PHP_INI_SYSTEM | PHP 5.2.12 以降で利用可能。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
file_uploads
boolHTTP ファイルアップロード を有効とするかどうか。 upload_max_filesize, upload_tmp_dir, post_max_size ディレクティブも参照ください。
upload_tmp_dir
stringファイルアップロード時にファイル保存に用いるテンポラリディレクトリ。 PHPの実行ユーザーが書きこみ可能である必要が あります。指定されない場合、PHPはシステムのデフォルト設定を 使用します。
ここで指定したディレクトリに書き込むことができない場合、 PHP はかわりにシステムのデフォルトテンポラリディレクトリを使用します。 open_basedir が on の場合は、システムのデフォルトテンポラリディレクトリへのアップロードを許可しておかなければなりません。
upload_max_filesize
intアップロードされるファイルの最大サイズ。
intを使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
max_file_uploads
int同時にアップロードできるファイルの最大数。 PHP 5.3.4 以降、何もファイルを指定せずに送信されたアップロードフィールドは ファイル数に数えられなくなりました。
SQL全般
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
sql.safe_mode | "0" | PHP_INI_SYSTEM | PHP 7.2.0 で削除されました |
以下に設定ディレクティブに関する 簡単な説明を示します。
sql.safe_mode
boolオンにすると、デフォルト値が指定されているデータベース接続関数は、 引数で指定された値よりもデフォルト値を優先して使用します。 デフォルト値の詳細については、関連するデータベースのドキュメントを参照ください。
警告
この機能は PHP 7.2.0 で 削除 されました。
Windows のみ
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
windows.show_crt_warning | "0" | PHP_INI_ALL | PHP 5.4.0 以降で利用可能。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
windows.show_crt_warning
bool- このディレクティブを有効にすると、Windows CRT の警告を表示します。 PHP 5.4.0 より前のバージョンでは、これが常に表示されていました。