[紀錄] PHP警告 – “headers already sent” 錯誤

情境:

在使用PHP進行 301 跳轉的時候, PHP錯誤當中出現以下訊息

PHP Warning: Cannot modify header information - headers already sent

為什麼會產生這個錯誤?

頁面內容(body) 一定都是跟在頭部(header) 後面, PHP必須先把頭部內容發送到伺服器並且只能夠發送一次, 在這之後也不能夠進行修改

當PHP第一次接收到輸出時, 會將所有收到的頭部訊息給清除掉, 再此之後她能夠把輸出所有想輸出的內容,但是頭部訊息就不能修改了

 

解決方法:

  1. 開啟php.ini,找到output_buffering,把設定值由 Off 改為 On 就可以了
  2. 使用ob_start(); 緩衝
<?php
ob_start();
// 程式碼放這邊
ob_end_flush();
?>

[紀錄] 使用PHP判斷WordPress有沒有登入來決定要不要301 Redirect

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *