为什么我的代码没有引发“标头已发送”警告?

时间:2019-05-29 16:32:20

标签: php php-7 php-7.3

我一直认为PHP不允许在任何输出之后发送标头。我很惊讶地发现这不会在我的代码中引起任何错误:

<?php

echo 'z';
header('X-Foo: Bar');
echo 'y';

它所做的只是输出zyX-Foo: Bar标头。这怎么可能?我没有使用输出缓冲。

默认情况下,服务器可以启用输出缓冲吗?还是PHP默认更改了缓冲输出的方式?我正在使用PHP 7.3.4。是的,我的所有错误,警告和通知都将设置为显示。

我正在使用Homestead服务器,也许这可以作为一些提示。

1 个答案:

答案 0 :(得分:0)

这意味着在您的php配置中启用了指令output_buffering

该值可以是Off0(默认情况下,它是禁用的),或者可以是On或任何大于0的整数,这意味着缓冲的限制(以字节为单位) )。