- 2008.07.01 Tue 12:30
php : 1行目でheader already sent エラーになる場合
PHPの勉強としてログイン機構を作成していたのですが、IDとパスワードの認証が成功して次の画面に遷移するのに「Header(“Location:○○”);」と書いたところ、
というエラーが出てしまいました。
調べてみたところ、定番のミスとしては「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文字なしの形式で保存してくださいね。
- Newer: mb_convert_encodingを使うのに苦労した話
- Older: フォームから送信されたメールを一括集計[D2]
Comments:0
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