【PHP】Header Location できない

php にて、header(‘location: xxx’);
を行い、他のページへ遷移しようとした所、以下のようなメッセージが表示されて
遷移ができないということがあった。

Warning: Cannot modify header information – headers already sent by (output started at C:\xxxxxxx.php:1)
in yyyyyyyy.php on line 28

yyyyyyyy.php の 28 行目で header() をしようとしているのに、
xxxxxxxx.php の 1 行目で既に何かが出力されているので
header() できませんよ、というワーニング。

原因はxxxxxxxx.php の 1 行目にあるはずなので、見てみた所、
<?php とあるだけ。 スペースなども特にない。 思いがけずはまってしまったのだが、本当の原因はxxxxxxxx.php のファイルの文字コードが utf-8 の BOM あり で保存されていること。 なのでサクラなどのテキストエディタで開いて、 utf-8 の BOM なしで保存し直せば解決。 BOM というのは Byte Order Mark の略で、 そのファイルが Unicode であることが識別できるように 先頭につけられるデータのことだそうだ。

カテゴリー: php