php - 为什么我的代码没有引发“标头已发送”警告?
问题描述
我一直认为 PHP 不允许在任何输出后发送标头。我很惊讶地发现这不会导致我的代码出现任何错误:
<?php
echo 'z';
header('X-Foo: Bar');
echo 'y';
它所做的是输出zy
和X-Foo: Bar
标题就好了。这怎么可能?我没有使用输出缓冲。
服务器是否可以默认启用输出缓冲?或者也许 PHP 改变了它默认缓冲输出的方式?我正在使用 PHP 7.3.4。是的,我所有的错误、警告和通知都设置为显示。
我正在使用 Homestead 服务器,也许这可以作为一些提示。
解决方案
这意味着在您的 php 配置中启用了指令output_buffering。
该值可以是Off
或0
(顺便说一句,默认情况下禁用),也可以是On
或任何大于 0 的整数值,这意味着缓冲限制(以字节为单位)。
推荐阅读
- ms-word - 动态修改交叉引用工具提示文本
- linux - 使用 POSIX 消息队列进行进程内通信
- java - 如何将嵌套的 JSON 输入发送到 Java 中的 RESTful Web 服务?
- c - 为什么在文件结束指示器被清除后不提示用户输入?
- java - 将一个庞大的循环分解为多种方法?
- python - 如何在正则表达式的括号中获取分号
- python - 在 Shopify 中按变体 SKU 更新库存
- database - 无论我使用 --dbpath,MongoDB 都在访问相同的数据,这正常吗?
- sql - Azure SQLDW Translate 在 Informatica SQL Query 中无法识别,但可以在 SSMS 中使用
- android - 如何将抽屉连接到颤动的动画图标按钮?