我遇到了这个问题,我在网上找到了解决方案并收集了它。
编写PHP的朋友必须有一个问题:当通过头函数更改HTTP协议头时,会出现类似于以下格式的警告。
复制代码代码如下所示:
警告:无法修改标头信息-已发送的标头

为什么会这样因为之前用头功能,你可以不输出任何东西,包括输出功能等回声或var_dump,在<< php.but空间有时我们不出口任何东西,但我们仍然有这个错误。这是因为我们的文件包含BOM签名。我们必须去掉它。现在我们来讨论这个问题。

看看测试代码:
复制代码代码如下所示:
< PHP
标题(内容类型:文本/ HTML;字符集= UTF-8);
(死亡);
>

这个代码是一个简单的头文件。在php之前,没有输出也没有空白。但是在网页中也会提示不能修改页眉信息的警告信息,这表明在php之前有内容,但是编辑器没有显示它。

我们使用UltraEdit打开文件,切换到16级,你可以看到,在一开始,在文本efbbbf然后,3c 3F 706870(<PHP),在<< PHP的输出信息,因此存在,在标题的变化,会得到一个警告消息。


这efbbbf是什么它的名字是BOM,字节顺序标记,Windows下的一个用于标记文本是否为Unicode的约定。记事本程序通过这三个字节来确定一个文件是否ANSI或Unicode。

我们知道问题的原因。接下来,我们要删除BOM。用Dreamweaver打开PHP页面,然后输入页面设置(按Ctrl + J),然后弹出下面的窗口:

取消选择包含Unicode签名(BOM),这是好的。现在,我们使用UltraEdit打开此文件的16段内容,如下


你可以看到,现在的BOM信息了,而且文件开始3c3f70。

最后,我们刷新浏览器,发现没有警告提示,问题就解决了。