📝

【PHP】header関数で「Cannot modify 〜」が発生する件

2023/03/30に公開

はじめに

先日、phpにて自身のポートフォリオサイトを改修していたところ、header関数を使用しタイトルの通りのエラーメッセージが出現したので、解決策をメモ。

内容

結論から言うと、phpでのheader関数は、それ以前に画面への出力を行うとタイトルのエラーが発生する。
ちょっと何言ってるか分からないです、という方は以下の具体例をどうぞ。

エラー1.php
<?php
    echo("test");
    header("Location: 〜");
    exit;
?>
エラー2.php
<!-- これはコメントです -->
<?php
    header("Location: 〜");
    exit;
?>

つまりechoで出力もダメ、コメントもダメ、空白もダメだし、ただの改行もダメらしい。なんにも許してくれないとの事。
でも逆に考えるとつまり関数呼び出し以前の出力さえしなければ何をしてもいい。phpで処理を書くのは問題ないし、header関数以降であれば画面への出力をしてもいい。

結論

header関数は厳しいらしく少しのミスも許してくれないみたいなので、出力がないか細かくチェックが必須となることが分かった。

参考文献

Discussion