UTF-8のBOMに苦しむ
PHPのheader関数でページをリダイレクトさせようとしたところ、
"Warning: Cannot modify header information - headers already sent by ~"
のエラーが出てうまく処理がされません。
出力ヘッダに何かごみが入ってるのだろうとソースを探るも、どこにもそれらしき記述は一向に見当たらない。
<?php
header ("Location:http://www.hoge.com");
?>
気を取り直してこんな最小限のソースで動作確認を試みるも、それでもエラーは消えず。
こんなソースに何がいる!?
その後もいろいろと試行錯誤の末、文字コードをUTF-8にしている時に出るということにようやく気づきました。
私は開発にEmEditorを使用しているのですが、このソフトがUTF-8保存時にデフォルトで付けてくれているBOMが怪しいようです。
BOM無しで保存し直したら、今までの苦労がバカのようにあっさりとエラーは消えました。
BOMが付いていることでマークがテキストの先頭に必ず含まれるため、出力ヘッダに入り込んでしまっていたようです。
あまりにも不可解だったため、もうバッファで処理しようか、リダイレクトやめてページをincludeして済まそうかと何度も妥協しかけましたが、根本的解決にいたってスッキリしました。
- 3キャリア別にフォーム入力モードを切り替えるカスタムヘルパー - 2009年4月03日
- オブジェクトのシリアル化についてのメモ - 2009年3月12日
- askeet 4日目 - 2009年2月24日
- symfonyでPDO接続をする - 2009年2月18日
- PEAR::HTTP_Requestでタイムアウト時間を指定する - 2008年8月23日
トラックバック(0)
このブログ記事を参照しているブログ一覧: UTF-8のBOMに苦しむ
このブログ記事に対するトラックバックURL: http://blog.knockoutmarch.com/mt3/mt-tb.cgi/80
コメントする