簡體   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