cutmail's blog

write the code

phpでheaders already sentと怒られた場合の対処法

webアプリを作っていて何度もこれに遭遇したので、メモ。

<?php
header("Content-Type: text/html; charset=UTF-8");
?>

とか書いて実行してみる。

Warning: Cannot modify header information - headers already sent by (output started at hoge.php:1) in hoge.php on line 2

ん?ヘッダーが既に送信されている?

こんな場合は、大抵文字コードが原因というのが多い。

UTF-8(BOM有)で保存してしまうと、ファイルの先頭にBOMコードがついてしまっていて、
こいつが先に送信されてしまうからみたいです。

UTF-8を使うときはBOMなしで保存するのがいいみたいです。