我的代码很简单:
<!DOCTYPE html>
<html>
<head>
...
<?php var_dump(headers_sent()); ?>
返回false。在打印某些内容后,不应立即发送标题吗?就像在第一个<
字符之后。
答案 0 :(得分:4)
这取决于output_buffering
文件中的php.ini
指令。如果是Off
output_buffering = Off
然后echo headers_sent()
应输出1
在其他情况下,headers_sent()
将不会输出任何结果,因为它将为FALSE。由于输出是缓冲的,因此不会发送标头。
如果你想绕过这个并强制发送标题,可以使用flush()
。
希望这有帮助!
答案 1 :(得分:2)
阅读文档中的评论!
此处,例如:http://es1.php.net/manual/en/function.headers-sent.php#75835
他做了很好的阐述:P
修改强>
是, headers_sent()将返回false,即使你使用print()或header()向ouptut发送了一些东西,如果你的php.ini中的output_buffering与Off不同,你发送的长度也不会超过output_buffering的大小。 [...] 这在php.ini评论中注意到: “输出缓冲允许你发送标题行(包括cookie),即使在发送正文内容之后,也会使PHP输出层的速度变慢一些。”
答案 2 :(得分:0)
我设法找到了一种不停用output_buffering的方法:
if (!headers_sent() && !ob_get_contents()) {
// do your thing
}