【PHP】BOM付ファイルだとheaderが動かない

かるハマりしたので、メモ。

PHPで作成しているシステムがいきなりリダイレクト処理(header(‘Location: ~’))が動かなくなった。

原因は文字コードがBOM付になってたこと

BOM付

ファイルを確認すると、「UTF-8 BOM付」ってなってた。

BOMを外すと、現象解決した!

BOMって何だ?

正式名称は「バイトオーダーマーク(byte order mark)」。

Unicodeの符号化形式で符号化したテキストの先頭につける数バイトのデータのことで、このデータを元にUnicodeで符号化されていることおよび符号化の種類の判別に使用するとのこと。

PHPとBOM

PHPのheader関数を呼び出す前は、echoとか出力しちゃダメなのは知ってた。

BOM付ファイルの場合、headerの前にBOMが出力されるらしく、同じ理由で動かなくなるそう。

ほほー。今後は注意しよう。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください