Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Профессиональные плагины для Wordpress
Главная » WordPress » Как найти и побороть BOM — неприятная ошибка в WordPress

Как найти и побороть BOM — неприятная ошибка в WordPress

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. Для молодоженов подходящий сайт — организация банкетов и решение всех вопросов, связанных со свадьбой.

26.05.09

Категории: WordPress.

Теги: , , , , ,

21 Comments
  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. TiamatInc

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

  16. Alexol

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

  17. Tod

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

  18. Andrew

    Все верно, сам работаю веб девелопером последние года 3, даже больше, и, до сих пор на блокноте плюс плюс сижу, лучше пока не нашел, к тому же приходится учить (чаще всего русских) клиентов что это такое и как побороть

  19. Максим

    Спасибо за статью. IE не воспринимал доктайп, если перед ним стояли пробелы. У меня был один пробел который получался из-за того что файлы шаблона были в utf-8. Поменял кодировку файлов, заработало.

  20. Егор

    Спасибо Вам! За статью!

  21. Эльчин

    Несколько дней мучалься с этой проблемой! Спасибо большое за статью!

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.