输出缓冲不起作用吗?



(我将output_buffering和implicit_flush设置为关闭。

我知道PHP有自己的输出缓冲。(不是以 ob_start()) 开头的输出缓冲)

<?php
echo 'hello';
header('HTTP/1.1 200 OK');
echo 'hello';
?>

所以我希望上面的源代码会正常工作,因为输出缓冲,除非我调用 flsuh()。

但是,会出现警告。(警告:无法修改标头信息 - 标头已发送)

我不知道为什么。如果我误会了,我希望你告诉我。

在设置标头之前,您无法输出任何内容。

发送或修改 HTTP 标头的函数必须在进行任何输出之前调用,无论php.ini设置如何。

这就是为什么有时<?php之前或之后的无意空格?>会导致抛出此错误。

在任何请求中,首先发送标头,然后输出。您正在有效地输出,然后发送/修改标头,然后再次输出。

在第一次调用任何输出时,PHP 将刷新标头缓冲区,这意味着它们已经设置好了,因此之后尝试更改它们是不可能的;这就是发生错误的原因。

最新更新