このリストには、PHPを設定する際に使用可能なコア php.ini ディレクティブが 含まれています。拡張モジュールにより処理されるディレクティブは、それぞれの 拡張モジュールのドキュメントページにリストと詳細が記述されています。 例えば、セッション用ディレクティブに関する情報は、 セッションのページ にあります。
表 G-4. 言語およびその他の設定オプション
| 名前 | デフォルト | 変更の可否 | 変更履歴 |
|---|---|---|---|
| short_open_tag | On | PHP_INI_PERDIR | PHP <= 4.0.0 で PHP_INI_ALL |
| asp_tags | "0" | PHP_INI_PERDIR | PHP <= 4.0.0 で PHP_INI_ALL |
| precision | "14" | PHP_INI_ALL | |
| y2k_compliance | "1" | PHP_INI_ALL | |
| allow_call_time_pass_reference | "1" | PHP_INI_SYSTEM|PHP_INI_PERDIR | PHP <= 4.0.0 で PHP_INI_ALL |
| expose_php | "1" | php.ini のみ | |
| zend.ze1_compatibility_mode | "0" | PHP_INI_ALL | PHP 5.0.0 以降で利用可能 |
以下に設定ディレクティブに関する 簡単な説明を示します。
short_open_tag
boolean
PHP タグの短縮型 ( <? ?> ) を使用 可能にするかどうかを設定します。PHPをXMLと組み合わせて用いる 場合は、 <?xml ?> をファイル中で用 いるためにこのオプションをオフにする必要があります。オンにし た場合にPHPでXMLを出力するには、例えば、次のようにします。 <?php echo '<?xml version="1.0"'; ?> これをオフにした場合、長い方の形式のタグ ( <?php ?> )を使用する必要があります。
注意: このディレクティブは、 <? echo と同じ形式の ショートカット <?= も影響を受けます。 このショートカットを使用するには、 short_open_tag をonとする 必要があります。
asp_tags
boolean
ASP 形式のタグ <% %> を通常のタグ <?php ?> に加えて使用可能にします。 このスイッチにより、出力の短縮形 <%= $value %> も 使用できるようになります。 詳細な情報は、 HTML からのエスケープ を参照ください。
注意: ASP形式のタグは3.0.4で追加されました。
precision
integer
浮動小数点数に関して表示される最大桁数を指定します。
y2k_compliance
boolean
2000年問題対応を強制します (2000年問題非対応のブラウザにおいて、 問題が発生する可能性があります)。
allow_call_time_pass_reference
boolean
関数のコール時に引数が参照で渡された場合に、警告するかどうかを 設定します。この機能は過去のものであり、将来のバージョンの PHP/Zend ではサポートされない可能性があります。 推奨される方法は、関数宣言時に参照渡しとするべき引数を指定する ことです。将来のバージョンでの動作を保障するために、この オプションを off とし、スクリプトがこの状態で正しく動作することを 確認することが推奨されます (この機能を使用する度に警告が発生します)。
関数コール時に参照で引数を渡すことは、コードの明解さを損なうために 廃止されています。関数は、引数が参照渡しであると宣言されて いない場合でも、文書化されていない方法で、その引数を修正できます。 副作用を回避するためには、どの引数を参照渡しとするかを関数宣言でのみ 指定すると良いでしょう。
参照に関する説明 も 参照ください。
expose_php
boolean
(例えば、Web サーバヘッダに PHP のサインを追加することにより、) PHP がサーバにインストールされていることを表示するかどうかを 指定します。これは全くセキュリティ上の脅威ではなく、サーバ上 で PHP を使用しているかどうかを調べられるようにするものです。
zend.ze1_compatibility_mode
boolean
Zend Engine 1 (PHP 4) との互換モードを有効にします。 この設定は、オブジェクトのコピー、キャスト (プロパティを 保持しないオブジェクトが FALSE あるいは 0 のいずれになるか)、 そして 比較 に影響を与えます。このモードの場合、オブジェクトを渡す際の デフォルトの方法は、参照渡しではなく値渡しとなります。
PHP 4 から PHP 5 への移行 というタイトルの セクションも参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
memory_limit
integer
スクリプトが確保できる最大メモリをバイト数で指定します。この 命令は、正しく書かれていないスクリプトがサーバーのメモリを食 いつぶすことを防止するのに役立ちます。 このディレクティブを使うためには、コンパイル時に有効にして おかなくてはなりません。このとき、configure のパラメータには、 --enable-memory-limit が含まれているはずです。 もし、使用可能メモリに制限を設けたくない場合は、-1 を指定して ください。
PHP 4.3.2で memory_limit が有効な場合、PHP 関数 memory_get_usage() が使用可能です。
integer を使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
max_execution_time も参照ください。
表 G-6. パフォーマンスチューニング
| 名前 | デフォルト | 変更の可否 | 変更履歴 |
|---|---|---|---|
| realpath_cache_size | "16K" | PHP_INI_SYSTEM | PHP 5.1.0 以降で使用可能。 |
| realpath_cache_ttl | "120" | PHP_INI_SYSTEM | PHP 5.1.0 以降で使用可能。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
表 G-7. データ処理設定オプション
| 名前 | デフォルト | 変更の可否 | 変更履歴 |
|---|---|---|---|
| track_vars | "On" | PHP_INI_?? | |
| arg_separator.output | "&" | PHP_INI_ALL | PHP 4.0.5 以降で利用可能 |
| arg_separator.input | "&" | PHP_INI_SYSTEM|PHP_INI_PERDIR | PHP 4.0.5 以降で利用可能 |
| variables_order | "EGPCS" | PHP_INI_PERDIR | PHP <= 5.0.5 では PHP_INI_ALL。 |
| auto_globals_jit | "1" | PHP_INI_PERDIR | PHP 5.0.0 以降で利用可能 |
| register_globals | "0" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_ALL |
| register_argc_argv | "1" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_ALL |
| register_long_arrays | "1" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_ALL |
| post_max_size | "8M" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_SYS。PHP 4.0.3 以降で利用可能 |
| gpc_order | "GPC" | PHP_INI_ALL | |
| auto_prepend_file | "" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_ALL |
| auto_append_file | "" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_ALL |
| default_mimetype | "text/html" | PHP_INI_ALL | |
| default_charset | "iso-8859-1" | PHP_INI_ALL | |
| always_populate_raw_post_data | "0" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_ALL。PHP 4.1.0 以降で利用可能 |
| allow_webdav_methods | "0" | PHP_INI_PERDIR |
以下に設定ディレクティブに関する 簡単な説明を示します。
track_vars
boolean
サーバ変数はそれぞれ、グローバル連想配列
$_ENV
,
$_GET
,
$_POST
,
$_COOKIE
,
$_SERVER
で参照することができます。
PHP 4.0.3 以降, track_vars は常にonとなっている ことに注意してください。
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 は
superglobals
$_SERVER
および
$_POST
を作成しますが、
$_ENV
、
$_GET
および
$_COOKIE
は作成しません。"" に設定すると、一切
superglobals
を設定しません。
非推奨のディレクティブ
register_globals
が on になっていると (これは PHP 6 で廃止される予定です)、 variables_order の設定は、
ENV
、
GET
、
POST
、
COOKIE
および
SERVER
の各変数がグローバルスコープに取り込まれる順番も左右します。 つまり、たとえば variables_order が
"EGPCS"
で register_globals が有効になっていたとすると、
$_GET['action']
と
$_POST['action']
が両方設定された場合の
$action
の値は
$_POST['action']
の内容になります。 これは、この例におけるディレクティブの設定で
P
が
G
より後になっているからです。
注意: $_REQUEST の内容や順序も、このディレクティブの影響を受けます。
auto_globals_jit
boolean
有効にした場合、SERVER および ENV 変数はスクリプトの開始時ではなく、 最初に使用された時 (Just In Time) に作成されるようになります。 これらの変数がスクリプトの中で使用されない場合、 このディレクティブを使用することで性能が向上します。
このディレクティブを有効にするには、PHP ディレクティブ register_globals , register_long_arrays , および register_argc_argv を無効にしておく必要があります。PHP 5.1.3 以降では、 register_argc_argv を無効にする必要はありません。
register_globals
boolean
EGPCS(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 6.0.0 で削除されました。
register_argc_argv
boolean
PHPが変数argvとargcを宣言するかどうかを指定します (これらにはGETの情報が格納されます)。
コマンドライン も参照ください。このディレクティブはPHP 4.0.0で 追加されました。以前のバージョンでは常に"on"です。
register_long_arrays
boolean
PHP が、
$HTTP_*_VARS
のような古い長い
定義済みの変数
を登録するかどうかを指定します。 On (デフォルト) とした場合、
$HTTP_GET_VARS
のような 定義済みの長い PHP 変数が定義されます。 これらの変数を使用していない場合には、性能面からこのオプションを off とすることが推奨されています。 かわりに
$_GET
のようなスーパーグローバル変数を使用してください。
このディレクティブは PHP 5.0.0 で利用可能となりました。 その後 PHP 6.0.0 で削除されました。
post_max_size
integer
POSTデータに許可される最大サイズを設定します。この設定は、ファ イルアップロードにも影響します。大きなファイルをアップロード するには、この値を upload_max_filesize より大きく設定する必要があります。
configureスクリプトでメモリ制限を有効とした場合、 memory_limit も ファイルアップロードに影響します。一般的に memory_limit は、 post_max_size よりも大きく する必要があります。
integer を使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
POSTデータの大きさが、post_max_sizeより大きい場合、
$_POST
と
$_FILES
superglobals
は空になります。この事象は、いくつかの方法で検出することができます。 例えば、
$_GET
変数をデータを
<form action="edit.php?processed=1">
のように 処理するスクリプトに渡し、
$_GET['processed']
が設定されているかどうかを 確認する方法があります。
gpc_order
string
GET/POST/COOKIE 変数処理の順番を設定します。この命令の デフォルトの設定は、"GPC"です。例えば、これを"GP"にPHPはクッキーを 完全に無視し、GETメソッド変数を同名のPOSTメソッド変数で上書き します。
注意: このオプションは、PHP 4では利用できません。 代わりに、 variables_order を使用してください。
auto_prepend_file
string
メインファイルの前に自動的に付加されるファイルの名前を 指定します。 このファイルは、 include() 関数のコール時 と同様に読み込まれます。 このため、 include_path が使用されます。
特別な値 none を指 定すると、ファイルを前に追加する機能は無効となります。
auto_append_file
string
メインファイルの後に自動的に追加されるファイルの 名前を指定します。 このファイルは、 include() 関数のコール時と同様に 読み込まれます。 このため、 include_path が使用されます。
none を値として 指定するとこの自動付加機能はオフとなります。
注意: スクリプトが exit() で終了する場合、 この自動付加機能は使用されません 。
default_mimetype
string
default_charset
string
4.0.0 以降、PHP は、デフォルトで常にContent-type:ヘッダで character encodingを出力するようになっています。charsetの送信 を無効にするには、これを空にしてください。
always_populate_raw_post_data
boolean
常に
$HTTP_RAW_POST_DATA
にアクセス可能とします。 この変数には生の POST データが格納されています。指定しなかった場合は、 データの MIME 型が判別できない場合のみこの変数にアクセス可能となります。 しかし、生の POST データにアクセスする方法としては
php://input
のほうが推奨されます。
$HTTP_RAW_POST_DATA
は、
enctype="multipart/form-data"
の場合には無効です。
allow_webdav_methods
boolean
PHPスクリプトの中で WebDAV http リクエスト (例:PROPFIND, PROPPATCH, MOVE, COPY, 等..) の処理を可能にします。 このディレクティブは、PHP 4.3.2 以降存在しません。 これらのリクエストのPOSTデータを取得したい場合、 always_populate_raw_post_data も同時に設定する必要があ ります。
magic_quotes_gpc , magic-quotes-runtime , および magic_quotes_sybase も参照ください。
表 G-8. パスおよびディレクトリ設定オプション
| 名前 | デフォルト | 変更の可否 | 変更履歴 |
|---|---|---|---|
| include_path | ".;/path/to/php/pear" | PHP_INI_ALL | |
| doc_root | NULL | PHP_INI_SYSTEM | |
| user_dir | NULL | PHP_INI_SYSTEM | |
| extension_dir | "/path/to/php" | PHP_INI_SYSTEM | |
| extension | NULL | php.ini のみ | |
| cgi.check_shebang_line | "1" | PHP_INI_SYSTEM | PHP 5.2.0 以降で利用可能。 |
| cgi.fix_pathinfo | "1" | PHP_INI_ALL | PHP 4.3.0 以降で利用可能。 |
| cgi.force_redirect | "1" | PHP_INI_ALL | PHP 4.2.0 以降で利用可能。 |
| cgi.redirect_status_env | NULL | PHP_INI_ALL | PHP 4.2.0 以降で利用可能。 |
| fastcgi.impersonate | "0" | PHP_INI_ALL | PHP 4.3.0 以降で利用可能。 |
| cgi.rfc2616_headers | "0" | PHP_INI_ALL | PHP 4.3.0 以降で利用可能。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
include_path
string
require()
、
include()
、 および
fopen_with_path()
関数がファイルを 探すディレクトリのリストを指定します。フォーマットは、システ ムの環境変数
PATH
と同じです。つまり、UNIXでは コロンで、Windowsではセミコロンで区切ったディレクトリのリスト で指定します。
このディレクティブのデフォルト値は、 . (カレ ントディレクトリのみ)です。
doc_root
string
サーバーにおけるPHPの"ルートディレクトリ"です。この値は空で無 い場合のみ使用されます。PHPが セーフモード で設定されている場合には、 このディレクトリの外側にあるファイルは使用されません。 PHPがFORCE_REDIRECTを指定してコンパイルされていない場合、 (IIS以外の)WebサーバのもとでCGIとしてPHPを実行する際には、 doc_rootを指定するべきです。 他の方法としては、後述の cgi.force_redirect 設定の使用があります。
user_dir
string
PHPファイル用にユーザーのホームディレクトリ として使用する基本ディレクトリの名前。例えば、 public_html となります。
extension_dir
string
extension
string
PHP の開始時に、どの動的ロード可能な拡張モジュールをロードするかを指定します。
cgi.check_shebang_line
boolean
CGI 版の PHP が、実行するスクリプトの先頭にある #! から始まる行 (shebang) をチェックするかどうかを指定します。 同じスクリプトをスタンドアロンと PHP CGI 経由の両方で使用したい場合などに、 この行が必要になるでしょう。このディレクティブを on にしておくと、 CGI 版の PHP はこの行の内容を読み飛ばすようになります。
cgi.fix_pathinfo
boolean
本来の 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
boolean
cgi.force_redirect は、ほとんどのWebサーバのもとで CGI として PHP を実行する際のセキュリティを確保するために必要です。 未定義のままの場合、PHPはデフォルトでこれを on にします。 これを off にする時は、 自己責任 の下に 行なってください。
注意: Windowsユーザ: IISでは安全にこれをoffにすることができ、 実際には、off にすることが「必要」です。 OmniHTTPD または Xitami を動作させるには、これを off にする「必要」 があります。
cgi.redirect_status_env
string
cgi.force_redirect を on にし、Apache または Netscape (iPlanet) Webサーバのもとで実行していない場合、 実行を継続して良いかどうかをPHPが判断するために 環境変数の名前を設定する必要があるかもしれません。
注意: この変数を設定することにより、セキュリティ上の問題を発生する 場合があります。行うことのリスクをまず把握してください。
fastcgi.impersonate
string
IIS (または WINNT ベースの OS) のもとでの FastCGI は、 クライアントをコールする際にセキュリティトークンを 匿名化する機能をサポートしています。 これにより、IIS がリクエストを処理するセキュリティコンテキストを 定義できるようになります。Apacheのもとで実行される mod_fastcgi は現在 (2002/03/17) この機能をサポートしていません。 IIS のもとで実行するには、1 に設定してください。 デフォルトは 0 です。
cgi.rfc2616_headers
int
PHP に、HTTP レスポンスを返す際に、どの形式のヘッダーを使うか 指示します。0 にセットした場合は、Apache やその他の web サーバで サポートされている Status: ヘッダーを送信します。このオプションの値を 1 にセットした場合は、PHP は RFC 2616 の仕様に適合した形式のヘッダーを送信します。この意味がわからないときは、 0 のままにしておいてください。
表 G-9. ファイルアップロード設定オプション
| 名前 | デフォルト | 変更の可否 | 変更履歴 |
|---|---|---|---|
| file_uploads | "1" | PHP_INI_SYSTEM | PHP <= 4.2.3 では PHP_INI_ALL、PHP 4.0.3 以降で利用可能 |
| upload_tmp_dir | NULL | PHP_INI_SYSTEM | |
| upload_max_filesize | "2M" | PHP_INI_PERDIR | PHP <= 4.2.3 では PHP_INI_ALL |
以下に設定ディレクティブに関する 簡単な説明を示します。
file_uploads
boolean
HTTP ファイルアップロード を有効とするかどうか。 upload_max_filesize , upload_tmp_dir , post_max_size ディレクティブも参照ください。
integer を使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
upload_tmp_dir
string
ファイルアップロード時にファイル保存に用いるテンポラリディレクトリ。 PHPの実行ユーザーが書きこみ可能である必要が あります。指定されない場合、PHPはシステムのデフォルト設定を 使用します。
upload_max_filesize
integer
アップロードされるファイルの最大サイズ。
integer を使用する際、 その値はバイト単位で測られます。 この FAQ に記載された 短縮表記を使用することも可能です。
以下に設定ディレクティブに関する 簡単な説明を示します。
sql.safe_mode
boolean
オンにすると、デフォルト値が指定されているデータベース接続関数は、 引数で指定された値よりもデフォルト値を優先して使用します。 デフォルト値については、関連するデータベースのドキュメントを参照ください。