【问题标题】:php script can't send headers because headers have already been sent, but are characters outside the scriptphp脚本无法发送标头,因为标头已经发送,但是是脚本之外的字符
【发布时间】:2009-05-28 11:12:17
【问题描述】:

这是我的前两行:

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

【问题讨论】:

    标签: php header


    【解决方案1】:

    您很可能已将文件保存为带有 BOM(字节顺序标记)的 UTF-8,将其重新保存为 UTF-8,无需提及。

    【讨论】:

      【解决方案2】:

      这个字符序列是UTF-8 BOM。使用 UTF-8 时,请在不使用 BOM(有时也称为签名)的情况下保存文件。

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-06-17
          • 2012-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多