[英]Symfony 5 - Failed to start the session because headers have already been sent by "php://input" at line 1 in production
[英]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/javascript
和charset
參數:
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.