Неприятная ошибка в Wordpress – как найти и побороть BOM

Tuesday, 26 May 09 в 22:44

wordpress ошибкаКак-то раз, зайдя на свой блог я с удивлением обнаружил непонятную ошибку, что-то вроде:

Warning: Cannot modify header information – headers already sent by (output started at /xxxxxxxx/wp-config.php:1)

Причем в админку зайти никак нельзя. Сразу же пошел проверять что не так с файлом wp-config.php. Все было на месте, пароли к БД правильные. Подумал было – снова хакнули)) Но опять же никаких признаков вандализма на FTP замечено не было. Самое странное (это меня в конце-концов окончательно запутало), что не работала только ссылка на сайт без www или наоборот (точно не помню). Начал стучать хостеру, смотреть настройки в админке домена – в общем, много чего.

А оказалось все намного проще – в начале файла конфига был некий BOM – маркер (сигнатура) для UTF-8 файлов. Именно поэтому выскакивала приведенная выше ошибка. Чтобы такого не случилось с вами в первую очередь нужно использовать редакторы кода, которые либо не ставят эту сигнатуру вообще, либо перед сохранением файла уточняют нужна ли она.

В некоторых текстовых редакторах вы можете найти в настройках флажки «Include Unicode Signature (BOM)», «Add Byte Order Mark» или подобные им. В противном случае, не имея возможности отключить ненужную опцию в той или иной программе, использовать ее не рекомендуется. На специализированных форумах можно найти список хороших текстовых редакторов, это – Notepad2, PSPad, UnicEdit, Notepad++. О последнем вообще много пишут, достаточно мощный инструмент. У меня каким-то случайным образом на компа был в наличии альтернативный редактор – Akelpad - его для подобных задач и применяю.

Следует заметить вот еще какой момент – ошибка с BOM может быть не только в файле wp-config.php. Более того, при отключенной опции вывод предупреждений, вы вообще не увидите где закралась неполадка. В таких случаях (ну и всех других) я бы рекомендовал использовать простой скрипт для поиска файлов с BOM. За разработку следует поблагодарить Юрия Белотицкого.

Использование скрипта очень простое.

  1. Скачиваете нужный файлик
  2. Заливаете его на FTP сервер в корневую директорию. Если WordPress установлен не в корне сайта (а в папке blog, например), то скрипт нужно разместить в директорию, где лежит WordPress, и из нее же и запускать.
  3. Запуск очень простой – набираете в адресной строке броузера ссылку http://ваш.сайт/find_bom.php

В результате получите список файлов, которые являются неисправными. Кстати, для быстроты работы скрипт проверяет только те директории, куда пользователи, как правило,  заливают файлы – корень, /wp-content/themes и /wp-content/plugins.

Вот, в принципе, и все. Как сложно пришлось решать такую простую проблему. Надеюсь, вам помог немного своим опытом, и теперь при появлении соответствующего предупреждения, вы будете знать, что делать:) Если не получается исправить тот или иной файл от BOM, можно просто залить новый из дистрибутива Wordpress.

P.S. Блог про стартап в Интернете без вложений – почти реалити шоу, читаем и учимся!
Место, где собираются (общаются) блоггеры – посетите обязательно!
Компания предлагает стиральные машины indesit и другую бытовую технику.
Для молодоженов – организация банкетов.

Понравился пост? Подпишись на обновления блога по RSS для блоггеров и вебмастеровRSS, RSS для блоггеров и вебмастеровEmail или twitter для блоггеров и вебмастеровtwitter!
Добавить комментарий

Комментариев - 18 для данного поста

  1. @ Lex Nevermind Пишет:

    Аналогичная проблема была с движком форума SMF. Поборол также с помощью скриптика. Может быть даже этого :)

  2. Сандер Пишет:

    Спасибо за скриптик, наверное, облегчит жизнь. Я сам недавно со своим самописным движком бился долго с подобной проблемой. Однако, стоит отметить, что есть еще один частый случай этой ошибки – пробел в конце файла. Когда делается php include, а включаемый файл – это только php код, все равно бывает проблема из-за того, что редактор дописал пробел ПОСЛЕ ?>

  3. designer Пишет:

    Я Дримвивером редактирую обычно, он вроде ничего не дописывает сам

  4. Tod Пишет:

    designer, им тоже пользуюсь. Правда пару раз были глюки, поэтому совмещаю Дримвивер и Akelpad.

  5. Skaizer Пишет:

    Сталкивался пару раз с этой сигнатурой, легко убирается с помощью редактора “Komodo Edit”.

  6. Vanilla Man Пишет:

    designer, Tod, Dreamweaver может не добавлять BOM в файл, но идентифицировать и удалять – почему-то не всегда. Хороший пост!

  7. Tod Пишет:

    Vanilla Man, кстати, да, насчет удаления хорошее замечание. Я вроде как проверял и сохранял ошибочный wp-config.php именно в Dreamweaver, но после перезаписи на FTP ничего не менялось. Поэтому я перезаливал файл из дистрибутива wordpress.

  8. @ Lex Nevermind Пишет:

    Выкиньте Дрим на помойку, если есть желание заниматься серьёзно веб-разработками…
    Нотпад++ или его аналоги скрасят Вам жизнь…

  9. Vanilla Man Пишет:

    Lex Nevermind, по-моему это холивар! Чем дрим хуже notepad++, если не использовать графический редактор?

  10. @ Lex Nevermind Пишет:

    Чем хуже: например добавляет мусор в код. Хотя настроить по идее можно, чтоб фигня всякая не лезла.

    Ладно, обойдёмся без ховара :) Тоже юзал Дрим по началу. Потом само собой получилось, что отказался.

  11. designer Пишет:

    Lex Nevermind, если вы не умеете пользоваться каким-то инструментом, не нужно его необоснованно хаять. Вы профи в Дриме? Знаете все его настройки? Можете написать по нему книгу? Если да, тогда у вас есть право писать “Выкиньте Дрим на помойку”, если нет – учите матчасть.

    Дрим добавляет/удаляет код на основе указанных вами же стандартов HTML (в тегах DOCTYPE, html, head и др.), а также при генерации кода из визуального режима. Если вы недостаточно хорошо знаете HTML, в этом виноваты не в Макромедии и не в Адоб.

    Недавно читал статью, в которой автор писал, что Фотошоп устарел и надо сайты рисовать в Иллюстраторе. По ходу обсуждения в комментариях выяснилось, что автор не знает ни о существовании папок для слоев в Фотошопе, ни о горячих клавишах.

  12. @ Lex Nevermind Пишет:

    HTML в достаточном количестве знаю :) И читайте комменты до конца. Там на написано: Ладно, обойдёмся без ховара :) Тоже юзал Дрим по началу. Потом само собой получилось, что отказался.

  13. designer Пишет:

    Я рад, что вы “в достаточном количестве” знаете HTML. И то, что вы решили обойтись “без ховара” на меня тоже произвело впечатление. К сожалению, я иногда раздражаюсь при виде поучений от “гуру” верстать сайты в блокноте и недружелюбно реагирую ;)

  14. @ Lex Nevermind Пишет:

    Извиняюсь, “холивара”.

    Также раздражаюсь при упоминании о Дриме. Очень я с ним не подружился. У каждого своя специфика.

    В “достаточном количестве” потому, что считаю, что на уровне “гуру” знать что-либо практически невозможно. Если что-то понадобится, я смотрю в справочник или гугел в поиске умных словей.

    К примеру, навскидку параметры тега MARQUEE я не назову. Да мне и не нужно :)

  15. Блог-шоу - выпуск 21 - Продвижение сайтов, веб-дизайн и креатив Пишет:

    [...] Александр Тодосийчук поделился решением – Неприятная ошибка в Wordpress – как найти и побороть BOM. [...]

  16. @ TiamatInc Пишет:

    Постоянно пользуюсь Notepad++ – отличная программа с множеством возможностей.

  17. @ Alexol Пишет:

    “Подумал было – снова хакнули”
    Можешь написать какие проблемы возникали и как ты их решал, когда взламывали сайт? У меня хакнули сайт по FTP – третий месяц не могу исправить. Исправить то, что на каждую выводимую ссылку привязывается какой-то левый скрипт (из-за этого в сапе все постоянно висит в error-e).

  18. Tod Пишет:

    Alexol, посмотри файлы системы на наличие стороннего кода, в шаблоне глянь. Дабы избавиться можешь действовать радикально – сохранить БД, файл шаблона (если он чистый) и создать блог/сайт заново.

Оставить комментарий (правила комментирования)