0

重複の可能性:
PHP の「警告: ヘッダーは既に送信されています」

テスト中に、「ヘッダーは既に送信されました」という問題に遭遇しました。でも、どうしてこうなったんだろう?と思いました。ヘッダーの 1 つは、PHP スクリプト全体が完了するまで不明な Content-Length ですが、この問題をどのように回避しますか?

4

3 に答える 3

1

出力バッファリングを使用する必要があります。

ob_start();
// write all your code here

header('Content-Length: ' . ob_get_length());

スクリプトの最後に到達すると、出力バッファリングが暗黙的にフラッシュされます

試してみることができることの 1 つは、header()呼び出しを中断して、PHP が自動的に を設定するかどうかを確認するContent-Lengthことです。

以下も参照してください。ob_start()

編集

PHP がそれを行う方法について話している場合、常にそのヘッダーが書き込まれるとは限りません。出力バッファがいっぱいになると、明示的な長さヘッダーを設定せずにフラッシュします。

参照: http://php.net/manual/en/outcontrol.configuration.php

于 2012-11-22T23:26:51.507 に答える
1

を使用してヘッダーを設定する前に何かを出力すると、このメッセージが表示されますheader()。したがって、ヘッダーを設定する前に、何もエコーしないようにしてください。HTML も空白もありません...何もありません。

于 2012-11-22T23:25:26.020 に答える
0

他のものを出力に送信する前に、ヘッダーを送信する必要があります。スクリプトが何かを生成すると (ページの静的な部分であれ、動的に生成された出力であれ)、PHP はヘッダーを送信し、その後に出力に送信されたものを送信します (バッファリングを使用しない限り)。 、他の回答で言及されています)。

したがって、ファイルを開始して<?php、一部のエディターが適切なファイル コンテンツの前に配置するのが好きな BOM 文字さえも含まれていないことを確認する必要があります。

于 2012-11-22T23:29:17.820 に答える