我一直认为 PHP 不允许在任何输出后发送 header 。我很惊讶地发现这不会导致我的代码出现任何错误:

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

它所做的就是输出 zyX-Foo: Bar header 就好了。这怎么可能?我没有使用输出缓冲。

服务器可以默认启用输出缓冲吗?或者也许 PHP 改变了它默认缓冲输出的方式?我正在使用 PHP 7.3.4。是的,我所有的错误、警告和通知都设置为显示。

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

请您参考如下方法:

这意味着在你的 php 配置中指令 output_buffering已启用。

该值可以是 Off0(顺便说一句,它默认禁用),也可以是 On 或任何大于 0 的整数值,这意味着缓冲限制(以字节为单位)。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!