2015-02-10 48 views
0

我已閱讀關於此特定主題的其他線程,但我相信有由ob_end_flush()生成的空白空間。php:ob_end_flush()停止工作的標題()

  1. 在我的代碼,如果我先我呼籲ob_end_flush()header()頭工作
  2. 如果去掉前導header()並把它調用ob_end_flush()然後頭未能執行之後。
  3. 在後者的情況下,我檢查頁面(控制-U在FireFox),看看一個空行

這裏是BOTH標題調用的代碼。再次,領先標題工作,但如果我刪除第一個標題ob_end_flush()後面的標題失敗。

header('location:administrative page.php'); //-- return 

ob_end_flush(); 

header('location:administrative page.php'); //-- return 

的問題不能與任何未被發現的領先或由於第一頭作品後高於或低於我的「問題區域」的代碼的空白。

任何想法? ======================================== addendum 2/12/2015 感謝這兩個答覆... 我需要更多的關注我的錯誤日誌在具有挑戰性的時間...

對我來說「驚喜」顯然ob_end_flush()啓動頭髮送,因此「我的」後續頭結構被阻止。 101行是:ob_end_flush(); 第105行是:header('location:administrative page.php');

20150212T083215: www.summersessiondevelopment.com/report.php 

PHP的警告:不能更改頭信息 - 頭已經發出在/愛馬仕/ waloraweb026/b1614/MOO(輸出開始/hermes/waloraweb026/b1614/moo.aassdevelopmentcom/report.php:101)。 aassdevelopmentcom/report.php on line 105

所以,我的任務是現在找到最終的方法來刷新我的fputcsv()緩衝區,然後使用fclose($ fp)關閉文件而不使用ob_end_flush();

我用蠻力方法試圖找到一種方式來刷新緩衝區,所以我會檢查,看看是否刪除ob_end_flush()函數,只使用:

ob_flush(); 
flush(); 
fclose($fp); 

的伎倆。

再次感謝你們!

+0

可能重複的[如何解決]已經發送的頭文件「PHP中的錯誤」(http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php) – 2015-02-10 17:06:55

回答

1

ob_end_flush輸出緩衝區。在致電header之前,您不能有任何輸出。

如果您需要存儲以後顯示的結果,請改爲使用ob_get_flush

請參閱文檔並考慮檢查您的PHP錯誤日誌。

+0

約翰,謝謝....但我對被認爲是「輸出」的東西有點困惑。下面的行在執行「n」次之前執行flush結構.....fflcsv($ fp,$ fields); .....關於ob_end_flush()的標題難題似乎並不介意fputcav()「輸出」。我))使用flush()和fcose(),但他們似乎並不總是適當地泄漏緩衝區。 低於當前代碼(頭失敗) - 但總是刷新緩衝區的唯一構造。 ob_end_flush(); ob_flush(); flush(); fclose($ fp); header('location:administrative page.php'); // - 返回 – 2015-02-11 22:26:38

+0

@GerryWilliams - 我想你回答了錯誤的評論。就「header」函數而言,「output」是將被髮送到瀏覽器的任何文本。錯誤消息,警告,HTML,空白,任何東西。如果您在'header'調用之前有任何這樣的情況,它將會失敗。 – 2015-02-11 22:45:52