我無法從輸出緩衝區中抑制PHP位置標題。我的理解是輸出緩衝區應該壓縮標題直到它們被刷新。我也認爲不應該使用ob_end_clean()發送頭文件。即使在輸出緩衝區內也會發送PHP標頭位置?
但是,如果你看到下面的代碼,如果我取消註釋標題行(第二行),我總是被重定向到谷歌,並從未看到'完成'。
ob_start();
//header("Location: http://www.google.com");
$output = ob_get_contents();
ob_end_clean();
$headers_sent = headers_sent();
$headers_list = headers_list();
var_dump($headers_sent);
var_dump($headers_list);
die('finished');
我需要壓制任何頭重定向,最好趕上他們在輸出緩衝區,所以我知道這些條件將產生一個重定向。我知道我可以用curl來做到這一點(將重定向設置爲false),但是因爲我想要緩衝的所有文件都在我自己的服務器上,所以curl被證明非常慢並且佔用了大量的db連接。
有沒有人有任何建議或知道任何方式捕捉/抑制位置標題?
感謝, 湯姆
(幾乎)完美!令人討厭的是我的服務器運行在PHP 5上。2仍然,但我找到了一個解決方法: foreach($ headers_list作爲$ header) { $ name_pos = strpos($ header,':'); ($ name_pos && strlen($ header)!= $ name_pos) header(substr($ header,0,$ name_pos + 1)); } } 這將刪除所有已設置的標題(最重要的是位置標題)。謝謝您的幫助! – lopsided 2011-05-25 12:22:23
Awww ...剛剛注意到'header_remove'在PHP 5.3.0或更高版本中可用。 – 2011-05-25 13:33:25