我无法从输出缓冲区中抑制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