回复 K.Tomono 和 alexrussell101 at gmail dot com
是的,
即使您使用print()或header()向输出发送了一些内容,如果在您的php.ini中output_buffering不同于Off,并且您发送的内容长度不超过output_buffering的大小,`headers_sent()` 也会返回false。
要测试它,请使用php.ini中的这些值尝试以下代码:
1) output_buffering=32
2) output_buffering = 4096
[代码]
<?php
echo "Yo<br />";
echo "Sent:",headers_sent(),"<br />";
echo "enough text to feed the buffer until it overflows ;-)<br />";
echo "Sent:",headers_sent(),"<br />";
?>
[/代码]
然后设置
3) output_buffering = Off
并尝试此代码:
[代码]
<?php
echo "Yo<br />";
echo "Sent:",headers_sent(),"<br />";
?>
[/代码]
这次将无条件地说标头已发送。
这在php.ini注释中有所提及:
"输出缓冲允许您即使在发送正文内容后也能发送标头行(包括cookie),代价是稍微减慢PHP的输出层。"
注意:这与implicit_flush调整完全无关。