実行時設定
php.ini の設定により動作が変化します。
名前 | デフォルト | 変更可能 | 変更履歴 |
---|---|---|---|
output_buffering | "0" |
INI_PERDIR |
|
output_handler | null |
INI_PERDIR |
|
implicit_flush | "0" |
INI_ALL |
|
url_rewriter.tags | "form=" |
INI_ALL |
PHP 7.1.0 以降では、このINI設定は output_add_rewrite_var() でのみ影響します。 PHP 7.1.0 より前のバージョンでは、このINI設定は 透過的セッションIDのサポートを有効にしていました。 (session.trans_sid_tags も参照ください) |
url_rewriter.hosts | $_SERVER['HTTP_HOST'] |
INI_ALL |
PHP 7.1.0 以降で使用可能です。 |
以下に設定ディレクティブに関する 簡単な説明を示します。
-
output_buffering
bool/int -
このディレクティブを
"On"
と設定することにより、 全てのファイルに関して出力バッファリングを有効にすることができます。 バッファの大きさを制限したい場合、 このディレクティブに"On"
を設定する代わりに、許可される最大値をバイト数単位で設定できます。 たとえばoutput_buffering=4096
のように設定できます。 PHP-CLI ではこのディレクティブが常に Off となります。 -
output_handler
string -
スクリプトの出力を、関数にリダイレクトできます。 たとえば
output_handler
に mb_output_handler() を指定した場合、 文字エンコーディングは透過的に指定したエンコーディングに 変換されます。出力ハンドラを指定することにより自動的に出力 バッファリングが on になります。注意:
mb_output_handler() と ob_iconv_handler() は一緒に使えません。 また、ob_gzhandler() と zlib.output_compression は、以下の値のいずれかと一緒に使えません: mb_output_handler(), ob_gzhandler(), zlib.output_compression, 'URL-Rewriter' ハンドラ (session.use_trans_sid と output_add_rewrite_var() も参照ください)
注意:
このディレクティブには、ビルトイン関数のみが使用可能です。ユーザー定義の 関数については、ob_start() を使用してください。
-
implicit_flush
bool -
デフォルトは
false
です。これをtrue
に変更すると、PHP が 各出力ブロックの後で自動的に出力レイヤをフラッシュするよう 指定します。これは、 (print や echo のような) 出力を生成するあらゆる関数をコールするたびに/コールし、HTML
ブロックの後で flush() 関数をコールすることと等価です。Web 環境の中で PHP を使用している時に このオプションを on に変更すると、著しい性能低下が生じるため、 通常はデバッグ目的のみにすることが推奨されます。
CLI SAPI
のもとで実行される時、この値はデフォルトでtrue
になっています。ob_implicit_flush() も参照ください。
-
url_rewriter.tags
は、 output_add_rewrite_var() の値でどのURLのHTMLタグや属性を書き換えるかを指定します。 デフォルトは"form="
です。"form="
やform
の任意の属性を追加すると、input
要素の hidden 要素が output_add_rewrite_var() に渡された name/value のペアごとにform
要素に追加されます。警告url_rewriter.tags
に一度以上同じタグを追加すると、 URL書き換えプロセスの間に最初に出てきたものだけが使われます。注意: PHP 7.1.0 より前のバージョンでは、url_rewriter.tags は session.trans_sid_tags のを指定するために使われていました。 PHP 7.1.0 以降は、
fieldset
は特別なタグとはみなされなくなります。 -
url_rewriter.hosts
string -
url_rewriter.hosts
は、 output_add_rewrite_var() に含めるリライト対象のホストを指定します。 デフォルトは$_SERVER['HTTP_HOST']
です。 複数のホストを指定する場合は、コンマ区切りのリストとして指定します。 但し、スペースを入れてはいけません。 たとえば、"php.net,wiki.php.net,bugs.php.net"
のように指定します。
User Contributed Notes 1 note
Using "OFF" or no value on output_buffering will disable header modifications, like redirects or content-type or content-disposition resulting in the error we commonly attribute to output before header modifications:
Warning: Cannot modify header information - headers already sent by (output started at C:\PATH\filename.php:1) C:\PATH\filename.php on line 1
Example code with output_buffering = OFF which results in this behavior. Changing it to "ON" or giving it a value will likely cause normal behavior.
<?php header("Location: http://www.php.net"); ?>
or
<?php header("Content-Type: text/Calendar"); ?>
<?php header("Content-Disposition: inline; filename=appointment.ics"); ?>