<?php
header("Content-Type: text/xml; charset=utf-8");
?>
なぁんて単純なコードをつくって、ブラウザアクセスすると
Warning: Cannot modify header information - headers already sent by (output started at hoge.php:1) in hoge.php on line 2
と怒られる現象に悩まされること1昼夜。
なんで1行目でheaders already sentなんて言われるねん? とhttpヘッダを確認してみたり ob_flash() を試してみたりとハマりまくった末。普段愛用しているテキストエディタNoEditorで、ファイル保存するときに文字コードを「Unicode (UTF-8 BOM有)」形式で保存してたのが原因でした。
ファイル先頭に不可視のBOMコードがついてた訳です。そのコードが、phpでhttpヘッダ制御をする前に送信されちゃってたのが原因ぽいですね。orz。分かってしまえばなんてことないじゃーん。







