情境:
在使用PHP進行 301 跳轉的時候, PHP錯誤當中出現以下訊息
PHP Warning: Cannot modify header information - headers already sent
為什麼會產生這個錯誤?
頁面內容(body) 一定都是跟在頭部(header) 後面, PHP必須先把頭部內容發送到伺服器並且只能夠發送一次, 在這之後也不能夠進行修改
當PHP第一次接收到輸出時, 會將所有收到的頭部訊息給清除掉, 再此之後她能夠把輸出所有想輸出的內容,但是頭部訊息就不能修改了
解決方法:
- 開啟php.ini,找到output_buffering,把設定值由 Off 改為 On 就可以了
- 使用ob_start(); 緩衝
<?php ob_start(); // 程式碼放這邊 ob_end_flush(); ?>