警告:无法修改标头信息-标头已发送
当脚本尝试将HTTP标头发送到客户端但之前已经有输出时,会发生此情况,这导致标头已经发送到客户端。
这是一个
E_WARNING并且不会停止脚本。
一个典型的示例是这样的模板文件:
<html> <?php session_start(); ?> <head><title>My Page</title></html>...
该
session_start()函数将尝试将带有会话cookie的标头发送到客户端。但是PHP在将
<html>元素写入输出流时已经发送了标头。您必须将其
session_start()移到顶部。
您可以通过在代码触发警告之前检查各行并检查其输出位置来解决此问题。将任何标头发送代码移到该代码之前。
一个经常被忽略的输出是PHP关闭之后的换行符
?>。
?>当它是文件中的最后一件事时,这被认为是标准做法。同样,此警告的另一个常见原因是,如果开头之前
<?php有空格,行或不可见字符,则导致Web服务器发送标头和空白/换行符,因此当PHP开始解析时将无法提交任何标题。
如果文件中包含多个
<?php ... ?>代码块,则文件之间不应有任何空格。(注意:如果您具有自动构造的代码,则可能有多个块)
还要确保您的代码中没有任何字节顺序标记,例如,当脚本的编码为带有BOM的UTF-8时。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)