エンコーディングを変換する際、先頭でUTF-8エンコーディングを宣言する必要があるページがありますが、プログラム内のヘッダーと競合します。グーグルで検索したところ、いくつかの解決策が見つかり、それを翻訳して整理しました。
次のメッセージが表示された場合: 「警告: ヘッダー情報を変更できません - ヘッダーはすでに .... によって送信されています。」PHP プログラムの実行時に次の警告が表示された場合: 「警告: ヘッダー情報を変更できません - ヘッダーは既に .... によって送信されました。」
次のユーザー投稿に基づくいくつかのメモ:
解決策はいくつかあります:
1. 空白行:
、特に include ファイルや require ファイルの後に空白行がないことを確認してください。多くの問題は、これらの空白行によって引き起こされます。
2. exit ステートメントを使用します (解決するには exit を使用します):
ヘッダー ステートメントの後に exit を使用すると、一部の人々に役立つようです
ヘッダーの後に exit() を追加します;
header ("Location: xxx"); exit();
3a. Javascript を使用します (解決するには Javascript を使用します):
<? echo "<scrīpt> self.location( file.php );</scrīpt>"; ?>
Javascript を使用してヘッダーを置き換えることができます。また、この方法を使用するには、ブラウザが Javascript をサポートしている必要があることにも注意してください。
3b. 出力バッファリングを使用する (出力バッファリングを使用して解決します):---私はこの方法で解決しました。それができることが証明されました!
<?php ob_start(); ?> ... HTML codes ... <?php ... PHP codes ... header ("Location: ...."); ob_end_flush(); ?>
4.php.iniでoutput_buffering = Onを設定します(php.iniでoutput_bufferingをオンにします)
set Output_buffering = On は、すべてのファイルの出力バッファリングを有効にします。ただし、このメソッドのパフォーマンスは、使用している Web サーバーと使用しているスクリプトの種類によって異なります。 🎜>
この方法は理論的には 3b 方法と同じです。ただし、この方法ではすべての PHP プログラムの出力キャッシュがオンになるため、サーバーのパフォーマンスやコードの複雑さによっては、PHP の実行効率に影響を与える可能性があります。