PHP

【PHP】header(Location:) で画面が真っ白。ジャンプエラーになる原因と対策

php_header_location_error

PHPで、別ページや別サイトにリダイレクトさせたい場合、header関数のLocationを使いますが、何かの原因でうまく動作しない場合があります。

今回はこの不具合の原因と対策を解説します。

原因:header(Location:〜)の記載の前に画面上に何か表示してしまっている。

header(‘Location: 〜の前にに、画面上に何か表示させる処理を行っているとうまく処理されません。

◆エラーになってしまう例:

このような記載をすると、以下のようなエラー(警告)が表示され、処理が止まってしまいます。

Warning: Cannot modify header information – headers already sent by (output started at …

php.ini の output_bufferingの設定をオンにすると、上記のようなエラーが表示されずに処理されますが、サーバーが変わったり設定が変わったりすると同じ現象が起こる場合があるので注意が必要です。

その他、Locationを使うにあたって気をつけたいこと

exitを誤動作防止の為に記載する。

header(‘Location: 〜’)の後に、exitを記載することは必須でありませんが、
exitをつけないと、Location指定したにもかかわらず、phpの処理が続いて、誤動作する場合もあります。

安全の為、習慣のように記載したほうが良いかと思います。

「Location」と「:」の間に半角スペースを入れない。

「Location:」という塊で1つの単語として認識するので、「Location」と「:」の間にスペース文字があるとうまく動作しません。

因みに、「Location」の「L」は、大文字でも小文字でも問題なく動作します。
また、「:」の後の半角スペースはあってもなくても問題ありません。