以下是您可以排除故障並解決此問(wèn)題的方法:
檢查指定的行:警告訊息顯示輸出始於/some/file.php的第12行,並且您在第23行嘗試修改頭部資訊。轉(zhuǎn)到這些行,並確保在第23行的header()函數(shù)呼叫之前沒(méi)有任何空格、echo、print、HTML或其他輸出。
刪除任何前導(dǎo)空格:如果在目前檔案之前包含或需要任何PHP檔案(例如使用include或require),請(qǐng)確保這些檔案在開(kāi)頭的<?php標(biāo)記之前沒(méi)有任何前導(dǎo)空格。 PHP標(biāo)記以外的空格被視為輸出,可能會(huì)導(dǎo)致此警告。
避免使用關(guān)閉的PHP標(biāo)記:在僅包含PHP程式碼(沒(méi)有HTML)的PHP檔案中,通常會(huì)建議省略檔案結(jié)尾的關(guān)閉PHP標(biāo)記(?>)。這樣可以確保在關(guān)閉標(biāo)記後沒(méi)有意外的空格或字符,以避免觸發(fā)輸出。
使用輸出緩衝:如果在header()呼叫之前有一些無(wú)法避免的輸出(例如由於函式庫(kù)依賴或條件語(yǔ)句),您可以使用輸出緩衝來(lái)捕獲輸出並防止其立即傳送到瀏覽器。在PHP腳本的開(kāi)頭使用ob_start()開(kāi)始輸出緩衝,在header()呼叫之前使用ob_end_flush()或ob_end_clean()結(jié)束輸出緩衝。
使用輸出緩衝的範(fàn)例:
<?php ob_start(); // Start output buffering // Code that generates output (if any) // Now, set the headers header('Location: new_page.php'); exit(); ob_end_flush(); // Send the output to the browser ?>