php脚本无法发送标头,因为标头已经发送,但是脚本之外的字符

时间:2009-05-28 11:12:17

标签: php header

这是我的前两行:

<?php
header('Content-Type: application/x-javascript');

它为我提供了已在第1行发送的标题。

它旨在生成一个从HTML页面加载的JavaScript文件,当从Firebug中检查JavaScript文件时,我得到了以下文件:

1  <br />
2  <b>Warning</b>: Cannot modify header information - headers already sent by (output started at C:\Program Files\Apache Group\Apache2\htdocs\totoro\Js\libs.php:1) in <b>C:\Program Files\Apache Group\Apache2\htdocs\totoro\Js\libs.php</b> on line <b>1</b><br />
3  var Totoro = {}, $t = Totoro;

正如您所看到的,它会吐出一个看起来像垃圾字符的字符,但没有任何内容被发送,第一行是header函数调用。可能是什么问题?

3 个答案:

答案 0 :(得分:13)

您很可能将文件保存为带有BOM(字节顺序标记)的UTF-8,将其重新保存为UTF-8而没有说明。

答案 1 :(得分:7)

此字符序列为UTF-8 BOM。使用UTF-8时,请保存没有BOM的文件(有时也称为签名)。

此外,您应该声明您正在使用的编码。因为UTF-8 BOM显示为您命名的字符,所以您的数据可能使用ISO 8859-1进行解释,因为UTF-8 BOM字节序列0xEFBBBF表示字符ï(0xEF),{{1 ISO 8859-1中的(0xBB)和»(0xBF)。

因此,请删除BOM并使用此¿标头字段以及正确的MIME类型Content-Typeapplication/javascript参数:

charset

答案 2 :(得分:0)

我在维基百科上发现了这个: http://en.wikipedia.org/wiki/Byte-order_mark#Representations_of_byte_order_marks_by_encoding

这使我更改了我的Komodo编辑器的首选项,并且选中了“编码:使用签名(BOM)”。一旦取消选中,问题就解决了。