2016-11-22 74 views
0

注意:我是而不是試圖解決headers already sent問題。我正在嘗試創建 one!PHP:演示頭已發送

我以爲我明白是什麼原因導致了這個錯誤,我試圖向一些學生展示它。下面是一個示例腳本:

Hello 

<?php 
    ini_set('display_errors',1); 
    error_reporting(E_ALL); 

    print 'This space for rent …'; 

    setcookie('test',12); 
    header('Testing'); 
?> 

正如你看到的,我想我最好設置一個頭之前發送輸出,無論是間接設置一個cookie,或者直接使用header()功能。

聽起來很奇怪,我該如何得到這個錯誤?

+1

如果php.ini中的輸出緩衝處於打開狀態,它不會將錯誤作爲輸出在最後被捕獲併發送。這有點像「懶惰的人」的方式來防止這些錯誤,而不是實際修復導致它們的腳本。你可以通過關閉輸出緩衝或在輸出之前用類似'ob_end_clean()'(然後輸出,然後標題)來結束輸出緩衝來創建錯誤。 –

+0

我沒有意識到可以在'php中做到這一點。 ini'。你的建議做到了。你能否將你的評論變成答案,以便我可以接受? – Manngo

回答

1

如果輸出緩衝在php.ini中打開,它不會拋出錯誤,因爲捕獲輸出並在最後發送。這有點像「懶惰的人」的方式來防止這些錯誤,而不是實際修復導致它們的腳本。你可以通過關閉輸出緩衝或在輸出之前使用類似ob_end_clean()(然後輸出,然後標題)來創建錯誤

+0

正如我上面評論的,我沒有意識到你可以在'php.ini'中做到這一點。我也發現你可以將它添加到'.htaccess'文件中:'php_value output_buffering ...'。謝謝你的幫助。 – Manngo

0

要創建此錯誤,只需在頁眉之後的任何地方使用header()函數即可。

<html> 
<head> 
<title>.....</title> 
</head> 
<?php 
header("location:index.php"); 
?> 

確保你的php.ini被設置得顯示這些錯誤。