「headers already sent」という警告メッセージは、スクリプトの途中でheader関数を実行したときなどに表示されます。つまり、header関数より前では何も出力しないようにということです。
ただし、「header関数は1行目で実行しましょう」ということではないので、注意してください。header関数より前でecho文で何かを出力したり、HTMLタグを記述しないようにということです。
何も出力していないのにこのメッセージが表示されるときは、スクリプトファイルの先頭に無駄な空白行がないか調べましょう。また、次のように記述しても、header関数の実行前に改行コードが出力されるので、「headers already sent」という警告メッセージが表示されます。
<?php header("Content-Type: text/html; charset=UTF-8");
○実行結果
Warning: Cannot modify header information – headers already sent by (output started at C:…
次のように修正すると、Warning(警告)は表示されなくなります。
<?php header("Content-Type: text/html; charset=UTF-8");
それも身に覚えがないという方。ファイルの文字コードをBOM付きのUTF-8で保存した場合、このメッセージが表示されます。保存するときに「BOMなし」の設定で保存してください。
よくあるPHPのエラーやミスは、こちらの本で紹介しています。参考にしてください。