実際の開発では、ヘッダーの前に実際の出力は存在できないということを聞いたことがありますか?ヘッダー関数はコードの先頭に記述する必要があると考える人さえいます。しかし、ヘッダー関数の前に何かを出力してみましたか?詳しく見てみましょう
<?phpecho 'hello world!';header('content-type: text/html;charset=utf-8;');がありました。テストしたところ、エラーや警告は発生せずに成功しました。あなたの状況がどのようなものであるかわかりませんが、「ヘッダー情報を変更できません - ヘッダーはすでに送信されました」のような警告が表示された場合、ヘッダー情報は変更できないことを意味していると思います。送られた。なぜ 2 つの異なる結果があるのかを理解しましょう。
例えると、映画を視聴するときのキャッシュのようなものです。すぐには再生されませんが、ダウンロードされたムービーの一部がまずキャッシュに入れられ、次にキャッシュから再生されます。これは、PHP コードを記述するときにも当てはまります
function | 説明 |
---|---|
ob_start | 出力バッファを開く |
ob_clean | バッファをクリアする |
ob_get_contents | バッファの内容を返す |
ob_get_clean | バッファの内容を返してクリアする |
<?phpob_start();echo 'hello world!';echo ob_get_contents();//输出hello world!hello world!
4096を変更し、このコードを再実行し、今すぐテストの警告またはエラーはありません。エラーは次のように表示されます:ヘッダー情報を変更できません - ヘッダーはすでに送信されました
ヘッダーとバッファーの間の分析
php のヘッダー
前の警告を説明しますヘッダー情報は変更できません
しかし、出力したコンテンツのバッファー領域が収まらなくなると、つまり、以前の出力「hello world!」が 5 バイトを超えてしまいます。これは直接出力されます。つまり、最初に 'hello world' を出力し、次に header(...) を出力します。これは、実際のヘッダーの前に出力できないという事実に違反します
概要