Alltips
ABOUT
Home
pagetop
Web CreatorYAMAGOBLOG

phpのheader()を使った際に、Warning: Cannot modify header information – headers already sent by 〜の解決方法

php

headerを使って遷移させようとしたら、Warning: Cannot modify header information….とでてしまい、
軽くパニックしました。

調べた結果「headerの前に何かアウトプットしてるとNG」ということがわかりました。
どういうことか?以下のような状態の場合、発生するようです。

<?php print $hoge;?>
<?php header('location: login.php');?>

print $hoge;がアウトプット部分でheaderより前に記述しているからNGとな。

header記述前に相当アウトプットしちゃってるんですけど!と謎な改行も空白行無いし、BOMも付いてないしで改行消してみたり、と頭をかかえてたのですが、調べた結果、以下の方法でエラーにならないそうです。

解決方法1:php.iniのoutput_bufferingをonにする。

php.iniを編集できる環境であれば「output_buffering」がoffになっているのでonにすればいいそうです。
ただ、初期設定かえるのちょっとやだな〜という人のために、もう一つ方法がありました。

解決方法2:ob_start();を使う。

僕の場合はこれで解決しました。
output_buffering = Offのままob_start();を挿入してもいけました。

<?php ob_start();?>
<?php print $hoge;?>
<?php header('location: login.php');?>

あ〜よかった

  • すばらしい (3)
  • 役立たず (0)
  • いいね (0)
  • まあまあ (0)

投稿者:

funky77

ダミーです。ダミーです。ダミーです。ダミーです。ダミーです。ダミーです。ダミーです。ダミーです。