繁体   English   中英

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

[英]php script can't send headers because headers have already been sent, but are characters outside the script

这是我的前两行:

<?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函数调用。 可能是什么问题?

您很可能已将文件另存为带有BOM (字节顺序标记)的UTF-8,然后另存为UTF-8,而无需多说。

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

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

因此,删除BOM,并使用此Content-Type标头字段以及正确的MIME类型application/javascriptcharset参数:

Content-Type: application/javascript;charset=utf-8

我在Wikipedia上找到了它: http : //en.wikipedia.org/wiki/Byte-order_mark#Representations_of_byte_order_marks_by_encoding

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM