た~みなるねんど

[PHP]Warning: Cannot modify header information – headers already sent by (ほげ) in ほげ on line ほげ

[PHP]Warning: Cannot modify header information – headers already sent by (ほげ) in ほげ on line ほげ

“Internet Explorer”
――それは、私の敵だ。

それはさておき、ページジャンプさせたいときというのはよくある。強制的に別ページに移させるというもの。
ところがどっこいこの
<?php
header(“Location:ほげ”);
?>
はトンデモな曲者である。上記header関数は全ての出力(htmlタグ、文章、echo、printなど)より先に書かなければならないのだが、先に書いても怒られる時がある。

Cannot modify header information – headers already sent

なんでもうheader情報送信してんだよ!!!!!!いっちばん先頭にheader()書いたのに!


解決法:

原因はいろいろ考えられるので、片っ端から試していくしかないようだ。

  • header()の前にecho等がないか確認。
  • header()の前にある余計な改行・空白を消す。
  • php.iniでoutput_bufferingをOnにする。
  • bomなしutf-8でファイルを保存。

webでは総じてbomなしのほうがよいらしい。
output_bufferingは……どうなんだろう。offにするメリットもあるのか、ないのか……

参考:
PHPでの質問です。 Warning: Cannot modify header information .. – 人力検索はてな
Warning: Cannot modify header information…のエラーを解決してみた。 | nekonomemo.net
文字コードのUTF-8について、BOM無しと、BOM付き、というのがあ.. – 人力検索はてな
HTML、PHPファイルで文字コードUTF-8使用時の注意点(BOMあり、無し)|PHP工房
output_buffering と output_handler – hida_shunの日記

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)