我最近遇到了很多5.4+的问题,其中一个是重定向无法正常工作,错误如#34;标题已经发送"。
我注意到的是,如果我将文件保存为" UTF-8没有BOM"问题消失了(我想有一些我没有真正看到的问题)。
我如何解决这个问题,所以我不必将每个文件转换为" UTF-8而没有BOM"?
谢谢!
答案 0 :(得分:1)
BOM(字节顺序标记)由3个字节(0xEF 0xBB 0xBF)组成,表示生成它的系统的字节顺序(即Intel / x86兼容处理器上的little-endian,几乎任何东西上的big-endian)其他)。 UTF-8不需要它,是的,你不应该把它放在你的文件中。
问题在于,由于BOM位于字符串的开头(因此是文件的开头),因此它会在您拥有的任何开放<?php
之前插入,因此会被发送到浏览器。
我不确定为什么PHP 5.4不会忽略它以及之前的版本应该如此,但如果它是UTF-8,你根本就不应该把它放在你的文件中。
答案 1 :(得分:0)
https://bugs.php.net/bug.php?id=42312&edit=1可以为您提供一些信息和交叉引用(请参阅注释),但看起来您只需要解决它(尽管其中一位评论者建议使用可能使生活更轻松的编译选项)。
答案 2 :(得分:-1)
“已发送的标题”
header("Location: some URL");
在你输出一些html后。
要解决此问题,请在调用get_header()(wordpress)或包含header.php(CMS)之前执行所有php检查和标头重定向