输出缓冲是否不起作用?
Is output buffering not working?
(我将 output_buffering 和 implicit_flush 设置为关闭。)
我知道 PHP 有自己的输出缓冲。 (不是以ob_start()开头的输出缓冲)
<?php
echo 'hello';
header('HTTP/1.1 200 OK');
echo 'hello';
?>
所以我预计上面的源代码会因为输出缓冲而正常工作,除非我调用 flsuh()。
但是,出现警告。 (警告:无法修改 header 信息 - header 已经发送)
不知道为什么。如果我有误解,希望你告诉我。
在设置 headers 之前无法输出任何内容。
发送或修改 HTTP headers 的函数必须在进行任何输出之前调用,无论 php.ini
设置如何。
这就是为什么有时候<?php
、?>
前后的无意space会导致抛出这个错误。
在任何请求中,先发送header然后输出。你是有效输出,然后sending/modifyingheaders,然后再输出
在第一次调用任何输出时,PHP 将刷新 header 缓冲区,这意味着它们已经设置好,因此之后尝试更改它们是不可能的;这就是发生错误的原因。
(我将 output_buffering 和 implicit_flush 设置为关闭。)
我知道 PHP 有自己的输出缓冲。 (不是以ob_start()开头的输出缓冲)
<?php
echo 'hello';
header('HTTP/1.1 200 OK');
echo 'hello';
?>
所以我预计上面的源代码会因为输出缓冲而正常工作,除非我调用 flsuh()。
但是,出现警告。 (警告:无法修改 header 信息 - header 已经发送)
不知道为什么。如果我有误解,希望你告诉我。
在设置 headers 之前无法输出任何内容。
发送或修改 HTTP headers 的函数必须在进行任何输出之前调用,无论 php.ini
设置如何。
这就是为什么有时候<?php
、?>
前后的无意space会导致抛出这个错误。
在任何请求中,先发送header然后输出。你是有效输出,然后sending/modifyingheaders,然后再输出
在第一次调用任何输出时,PHP 将刷新 header 缓冲区,这意味着它们已经设置好,因此之后尝试更改它们是不可能的;这就是发生错误的原因。