1

ヘッダーと出力バッファリングに関していくつか質問があります。

出力の前にヘッダーを送信する必要があるか、ヘッダーが機能しないこと、および出力バッファリングがすべての HTML をバッファーに格納し、PHP プロセスが一度にビットを送信するのとは対照的に、それを 1 つとして送信することを知っています。

つまり、これは、出力バッファリングがオンの場合、すべてのコンテンツが 1 つの変数に収集され、スクリプトでヘッダーが定義された場所のどこにでも先頭/最初に配置されることを意味しますか?

また、出力バッファリングがオフの場合、出力の前にヘッダーを宣言する必要がありますか?

また、出力ob_clean()バッファリングをオンにする必要があるなどの出力バッファリング機能を使用するには? あたかも出力バッファリングがオフであったかのように、すでに送信されたものをきれいにすること、「取り戻す」ことはできませんでしたか?

最後に、出力バッファリングは php.ini 内でオン/オフになっていますか? XAMPP ローカル ホスト サーバーでは出力バッファリングがオンになっているようですが、VPS ではオンになっていないため、VPS の php.ini に移動する必要がありますか?

4

2 に答える 2

1
So does this mean when output buffering is on, all content is collected into 
one variable and where ever the headers were defined in the script they will be 
placed at the top/first?

ヘッダーはバッファリング状態に関係なく送信され、他のすべてecho & printは解放するまでバッファリングされます。

And if output buffering is off you have to declare headers before any output?

はい、これは正しいです。

出力バッファリングの自動状態は、PHP.INI

マニュアル

XAMMP が開発環境であると仮定すると、LIVE VPS 環境に合わせて変更することをお勧めします。

于 2013-08-26T16:27:22.757 に答える
1

これは、出力バッファリングがオンの場合、すべてのコンテンツが 1 つの変数に収集され、ヘッダーがスクリプトで定義された場所のどこにでも先頭/最初に配置されることを意味しますか?

ほとんどがそうです。コンテンツを含む「PHP 変数」はありませんが、ob_*() 関数を使用してアクセスできます。たとえば、ob_get_contents() でバッファリングされたコンテンツを取得し、ob_clean() で消去します。

ヘッダーは、最初のコンテンツが送信される直前に送信されます。実際、header() 関数の replace (2 番目の引数) を使用して、以前に指定したヘッダーをオーバーライドできます。

また、出力バッファリングがオフの場合、出力の前にヘッダーを宣言する必要がありますか?

そうしないと、「警告: ヘッダー情報を変更できません - ヘッダーは既に送信されています...」というメッセージが表示されます。

また、ob_clean() などの出力バッファリング関数を使用するには、出力バッファリングをオンにする必要がありますか?

いいえ。ただし、バッファリング プロセスを開始するには、ob_start() を呼び出す必要があります。

最後に、出力バッファリングは php.ini 内でオン/オフになっていますか?

output_buffering ディレクティブを確認してください。

つまり、VPS php.ini に移動する必要がありますか?

出力バッファリング機能は、構成可能な PHP_INI_PERDIR です。.htaccess ファイルを使用するか、スクリプトの先頭に ob_start() を追加するだけです。

于 2013-08-26T16:29:40.557 に答える