我正在開發一個將與其他PHP腳本一起使用的PHP腳本。我的腳本將文件推送到瀏覽器進行下載,因此需要緩衝區清潔並且不發送標題。防止ob_end_clean()發送頭文件?
現在,假設輸出緩衝區包含一個字符「a」,並且頭文件尚未發送。我正在嘗試擺脫緩衝區內容的方法是使用ob_end_clean()完全清空緩衝區。這工作,然而,這發出的頭,我不知道如何防止這種情況:
var_dump(headers_sent()); // false
ob_end_clean();
var_dump(headers_sent()); // true
如何獲得不發送頭去掉緩衝區的內容?
UPDATE:
有報道說,被送到我的var_dump()
導致頭部的擔憂。這裏的另一個測試:
$sent_a = headers_sent();
ob_end_clean(); // or ob_clean(); etc..
$sent_b = headers_sent();
var_dump($sent_a);
var_dump($sent_b);
exit;
結果:
bool(false) bool(true)
如果我叫'ob_start我無法重現這個問題( )'在代碼之前(第一個'var_dump'被丟棄,第二個正確地聲明'false')。你有一個'ob_start()'嗎? – Wrikken
如前所述,還有一些其他腳本(我無法控制它們)在輸出緩衝區中留下一些內容。我正在用ob_get_contents()來檢查它。我正在開發一個WordPress插件,並希望使它更加失敗(或者如果您願意的話,可以很簡單)。 – sPaul
任何其他代碼可以根據需要結束/刷新緩衝區,如果您不信任它們,那麼您可以做的事情很少。我_can_告訴你'ob_get_clean()'不會發送頭文件。期。如果標題_已發送,它已在另一個地方完成(並且'headers_sent()'可以告訴你_where_)。 – Wrikken