Вход для клиентов

Имя пользователя :
Пароль :


 

ОШИБКА - WARNING: CANNOT MODIFY HEADER INFORMATION...

Часто при переносе сайта с локального компьютера можно встретиться с ошибкой, вида:

Warning: Cannot modify header information - headers already sent by (output started at 

Причины такой проблемы различные, одни из самых распространенных это:
1) лишние символы, пробелы в файле;
2) из-за BOM в UTF.

Если с первой причиной все понятно, достаточно просто удалить лишние символы и проблема исчезнет.
А вот со второй проблемой интереснее. 

Немного теории.

BOM (англ. Byte Order Mark, BOM) - это метка порядка байтов Юникода, также её часто называют сигнатурой (соответственно, UTF-8 и UTF-8 with Signature). 

По наличию сигнатуры программы могут автоматически определить, является ли файл закодированным в UTF-8, однако файлы с такой сигнатурой могут некорректно обрабатываться старыми программами, в частности xml-анализаторами. Многие программы Windows (включая Блокнот) добавляют байты 0xEF, 0xBB, 0xBF в начале любого документа, сохраняемого как UTF-8 - это и есть BOM. 


А теперь займемся удалением BOM: 

Для поиска BOM'а в файлах сайта можно использовать команду:

$ find -type f|while read file;do [ "`head -c3 -- "$file"`" == $'\xef\xbb\xbf' ] && 
echo "found BOM in: $file";done


Также можно воспользоваться данной командой:

$ grep -rl $'\xEF\xBB\xBF' .

А с помощью нижеприведенной команды можно найти метки порядка байтов и удалить их:

$ find . -type f -exec sed 's/^\xEF\xBB\xBF//' -i.bak {} \; -exec rm {}.bak \;



Удачной работы! 


Новости


Мы принимаем