PHP скрипт не может отправлять заголовки, потому что заголовки уже отправлены, но это символы вне скрипта - PullRequest
1 голос
/ 28 мая 2009

Это мои первые две строки:

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

И это дает мне заголовки, уже отправленные в строке 1.

Он предназначен для генерации файла JavaScript, который загружается со страницы HTML, при проверке файла JavaScript из Firebug я получил следующий файл:

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 ]

13 голосов
/ 28 мая 2009

Скорее всего, вы сохранили файл как UTF-8 с BOM (метка порядка байтов), сохраните его как UTF-8 без упоминания.

7 голосов
/ 28 мая 2009

Эта последовательность символов является UTF-8 BOM . При использовании UTF-8 сохраняйте свои файлы без спецификации (иногда это также называется подписью).

Кроме того, вы должны объявить кодировку, которую вы используете. Поскольку в качестве названных вами символов показана спецификация UTF-8, ваши данные, вероятно, интерпретируются в соответствии с ISO 8859-1, поскольку последовательность байтов спецификации UTF-8 0xEFBBBF представляет символы ï (0xEF), » (0xBB ) и ¿ (0xBF) в ISO 8859-1.

Удалите спецификацию и используйте это поле заголовка Content-Type вместе с правильным параметром MIME типа application/javascript и charset:

Content-Type: application/javascript;charset=utf-8
0 голосов
/ 28 мая 2009

Я нашел это в википедии: http://en.wikipedia.org/wiki/Byte-order_mark#Representations_of_byte_order_marks_by_encoding

Это заставило меня изменить настройки моего редактора Komodo, и там проверено «Кодировка: использовать подпись (BOM)». После отмены проверки проблема решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...