Home > php > 1行目でheader already sent エラーになる場合

  • 2008.07.01 Tue 12:30

php : 1行目でheader already sent エラーになる場合

PHPの勉強としてログイン機構を作成していたのですが、IDとパスワードの認証が成功して次の画面に遷移するのに「Header(“Location:○○”);」と書いたところ、

Warning: Cannot modify header information – headers already sent by (output started at hoge.php:1) in hoge.php …

というエラーが出てしまいました。

調べてみたところ、定番のミスとしては「Header();の前にHTMLタグやprint、echoなどの出力がある」というものがあるようです。
そこで、print文で出していたエラーメッセージを変数の中に入れて、Header文の後に出力させるように変更。
しかしまだ同じエラーが出る。
include();やrequire();で読み込んでいるファイルも調べ、出力をしないように変更しましたが、なお状況は変わらず・・・
ほとほと困っていたところに、株式会社マイネット・ジャパンの平島浩一郎さんのブログの記事を見つけました。

phpでheaderが出力できなくてハマった件
http://blog.mynet.co.jp/hirashima/2006/08/phphedaer.html

どうやら、テキストエディターによっては1行目に「BOM文字」と呼ばれる記号が自動で挿入されるということがある模様。私が使用していたのはTeraPadだったので、それまでの保存文字コード「UTF-8」から「UTF-8N」に変更し、保存したところ、きちんとHeader();が機能するようになりました。
このとき、include();やrequire();先のファイルも同様にBOM文字なしの形式で保存してくださいね。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://haruka.sugawa.in/note/php/37/trackback
Listed below are links to weblogs that reference
1行目でheader already sent エラーになる場合 from haruka.sugawa

Home > php > 1行目でheader already sent エラーになる場合

Return to page top