PHP不能修改标题信息标题提示已经发出的解决办法

网站应用 - 八月 8, 2009 - 来源:单点日志 - No Comments -

在执行PHP代码的时候,我们可能会经常性出现错误,提示:Cannot modify header information headers already sent。这个错误,大多情况是因为PHP文件保存编码的问题,UTF-8 和UTF-8 without BOM,这种情况用NotePad++ 或者 其它文本编辑软件转储为UTF-8 without BOM 格式,或者在WINDOWS在的文本编辑器转储为UTF-8格式包含BOM的。不管怎么样,你只需要知道文件存储编码会导致不能修改标题信息标题,其他的你自己调式。

translate by Google

In the implementation of PHP code, we may be recurrent error prompted: Cannot modify header information headers already sent. This error, mostly because the PHP is the problem of file encoding, UTF-8 and UTF-8 without BOM, this situation with NotePad + + or other text editing software dump to UTF-8 without BOM format, or in the text WINDOWS Editor dump to UTF-8 format contains the BOM. In any case, you only need to know the file is stored coding will lead to the title of the header information can not be amended, and other mode of your own.


UTF-8 和UTF-8 without BOM的区别:
Unicode规范中有一个BOM的概念。BOM—-Byte Order Mark,就是字节序标记。在这里找到一段关于BOM的说明:
在UCS 编码中有一个叫做”ZERO WIDTH NO-BREAK SPACE”的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符”ZERO WIDTH NO-BREAK SPACE”。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符”ZERO WIDTH NO-BREAK SPACE”又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符”ZERO WIDTH NO-BREAK SPACE”的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
另外unicode网站的FAQ-BOM详细介绍了BOM。官方的自然权威,不过是英文的,看起来比较费劲。
UTF- 8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的FFFE了。这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。可是,还是有很多软件不能识别BOM。我在研究Firefox的时候就知道,在Firefox早期的版本里,扩展是不能有BOM的,不过Firefox 1.5以后的版本已经开始支持BOM了。现在又发现,PHP也不支持BOM。
PHP在设计时就没有考虑BOM的问题,也就是说他不会忽略UTF-8编码的文件开头BOM的那三个字符。由于必须在
在 Bo-Blog的wiki看到,同样使用PHP的Bo-Blog也一样受到BOM的困扰。其中有提到另一个麻烦:”受COOKIE送出机制的限制,在这些文件开头已经有BOM的文件中,COOKIE无法送出(因为在COOKIE送出前PHP已经送出了文件头),所以登入和登出功能失效。一切依赖 COOKIE、SESSION实现的功能全部无效。”这个应该就是Wordpress后台出现空白页面的原因了,因为任何一个被执行的文件包含了BOM,这三个字符都将被送出,导致依赖cookies和session的功能失效。



无觅相关文章插件,快速提升流量

《PHP不能修改标题信息标题提示已经发出的解决办法》由单点日志原创提供!
转载请注明:http://spoint.babyshoot.cn/archives/2009/08/cannot-modify-header-information-headers-already-sent.html

No Comments│赶紧发话! »

发表评论

您必须登录后才能发表评论。
8