実行時設定

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

出力制御設定オプション
名前 デフォルト 変更可能 変更履歴
output_buffering "0" PHP_INI_PERDIR  
output_handler NULL PHP_INI_PERDIR  
implicit_flush "0" PHP_INI_ALL  
url_rewriter.tags "a=href,area=href,frame=src,form=,fieldset=" PHP_INI_ALL PHP 7.1.0 より前のバージョンでは、これを用いて 透過的セッションIDのリライトを設定していました。PHP 7.1.0 以降では、これは output_add_rewrite_var() でだけ用いられます。
url_rewriter.hosts $_SERVER['HTTP_HOST'] PHP_INI_ALL PHP 7.1.0 以降で使用可能です。
PHP_INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。

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

output_buffering bool/int

このディレクティブを 'On' と設定することにより、全てのファイルに 関して出力バッファリングを有効にすることができます。 特定の大きさにバッファの大きさを制限したい場合、このディレクティブの 値として 'On' の代わりに最大バイト数(例:output_buffering=4096) を使用することができます。 PHP-CLI ではこのディレクティブが常に Off となります。

output_handler string

スクリプトの全ての出力を関数にリダイレクトすることができます。 例えば、output_handler に mb_output_handler() を指定した場合、文字エンコーディングは透過的に指定したエンコーディングに 変換されます。出力ハンドラを指定することにより自動的に出力 バッファリングを on にします。

注意:

ob_iconv_handler()mb_output_handler() の両方で使用することは できません。また、 ob_gzhandler()zlib.output_compression の両方を使用することはできません。

注意:

このディレクティブには、組み込み関数のみが使用可能です。ユーザー定義の 関数については、ob_start() を使用してください。

implicit_flush bool

デフォルトは false です。これを true に変更すると、PHP が 各出力ブロックの後で自動的に出力レイヤをフラッシュするよう 指定します。これは、各 print あるいは echo そして HTML ブロックの後で flush() 関数をコールすることと等価です。

Web 環境の中で PHP を使用している時に このオプションを on に変更すると、著しい性能低下が生じるため、 通常はデバッグ目的のみにすることが推奨されます。CLI SAPI のもとで実行される時、この値はデフォルトで true になっています。

ob_implicit_flush() も参照ください。

url_rewriter.tags string
url_rewriter.tags は、 output_add_rewrite_var() でどの HTML タグをリライトするかを指定します。 デフォルトは a=href,area=href,frame=src,input=src,form= です。 form は特別なタグです。<input hidden="session_id" name="session_name"> が form 変数に追加されます。

注意: PHP 7.1.0 より前のバージョンでは、url_rewriter.tagssession.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 のように指定します。

add a note add a note

User Contributed Notes 1 note

up
5
support at losalgendesign dot com
10 years ago
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"); ?>
To Top