Исправление ошибки: cannot modify header information – headers already sent by
Удивительно сколь малая ошибка может привести в полностью нерабочее состояние ваш сайт на WordPress. Мы говорим, конечно же, об известной ошибке-предупреждении WordPress Warning: cannot modify header information – headers already sent by pluggable.php (не удаётся изменить информацию заголовка). Если вы один из тех, кто столкнулся с этой ошибкой, тогда вы пришли по адресу. В этом руководстве по WordPress мы обсудим прежде всего причину появления этой ошибки и посмотрим на пути решения, которые позволят окончательно решить проблему.
Обратите внимание, что Hostinger предлагает специальный оптимизированный для WordPress хостинг. Воспользуйтесь предложением и получите WordPress хостинг со скидкой до 82%!
Оглавление
Что потребуется
Перед стартом убедитесь в наличии следующего:
- Доступ к вашей панели управления хостингом или FTP доступ
Как возникает ошибка Cannot modify header information – headers already sent by
Давайте рассмотрим пример этой ошибки, чтобы лучше понять причины. Ошибка обычно появляется в такой форме:
Warning: Cannot modify header information - headers already sent by (output started at /public_html/wp-content/plugins/my-plugin/my-function.php:#) in /public_html/wp-includes/pluggable.php on line #
Как видите, в ошибке упоминается два файла. Первый файл (в нашем случае: my-function.php размещённый в /public_html//wp-content/plugins/my-plugin/) во главе подозреваемых. Это наш пользовательский код, который предназначен для изменения функциональности ядра, обеспечиваемой WordPress. Функциональность ядра находится в файле pluggable.php (файл ядра WordPress, неизменный для любой установки WordPress). Иными словами, проблема в первом файле, который не даёт второму файлу выполняться должным образом.
Основной причиной ошибки являются лишние пробелы в первом файле. Это пробелы вверху или внизу файла, ненужные пробелы где угодно в файле или даже пробелы в PHP-тегах <?php и ?>. К слову, по причине того, что программисты могут (и обычно так и происходит) ошибочно вбивать лишние пробелы в свой код, эта ошибка наиболее часто возникает, чем можно ожидать. Строка #, указанная в сообщении об ошибке, ссылается на место расположения проблемы – это поможет устранить проблему быстрее и без суеты.
Исправление ошибки cannot modify header information – headers already sent by
Теперь, когда вы знаете, что вызывает ошибку, вы можете перейти к её исправлению. Мы покажем вам два варианта устранения проблемы, которые вы можете попробовать по отдельности или по очереди, если по отдельности не помогло.
Вариант 1 – Редактирования неисправного файла
Первый вариант решения ошибки Warning: cannot modify header information – ручное исправление файла с ошибкой. Вы уже имеете в наличии необходимую информацию, для нахождения проблемы в самом сообщении об ошибке (помним, это первый файл в сообщении). Всё, что потребуется – это открыть этот файл по FTP, используя клиент вроде FileZilla или через файловый менеджер.
По существу, всё, о чём здесь нужно позаботиться – это убрать лишние пробелы/пустые строки в файле. Хорошее место для начала будет строка #, упомянутая в сообщении об ошибке. С этого места вы можете продолжить разбор остального файла в поисках других ненужных пробелов или пустых строк до самого конца документа.
Убедитесь в правильности написания начального и завершающего тегов PHP. Не должно быть пробела до или после тега <?php, также как и тега ?>. Также, последняя строка кода не должна завершаться пробелом или лишнем переводом строки.
На скриншоте ниже вы можете увидеть файл wp-config.php, в котором есть пробелы перед первым тегом PHP.
ПОДСКАЗКА: Во многих текстовых редакторах удалить ненужные пробелы можно автоматически. Например, для удаления лишних пробелов в редакторе Atom, выделите весь код и перейдите в Packages -> Whitespace -> Remove Trailing Whitespace.
Вариант 2 – Заменить неисправный файл
Конечно, редактирование целого ряда файлов с ошибками может вызвать затруднение. Файлы могут относиться к плагину или теме, которые вы только что установили на своём сайте или даже могут быть файлами ядра WordPress.
Если ошибка действительно вызвана плагином или темой, всё что потребуется сделать – это переустановить его/её. Это действие в большинстве случаев помогает. С другой стороны, если файл ядра WordPress причина ошибки, лучшим решением взять чистую копию WordPress и заменить файл с ошибкой в вашей установке на такой же в исправной версии. Это будет гарантировать, что неисправный файл восстановлен в исходное состояние, в то время как остальная установка вашего сайта WordPress останется в целости и сохранности. Теперь, просто перезагрузите страницу и убедитесь, что ошибка исправлена.
В завершение
Независимо от того, вставили ли вы фрагмент кода в файл, добавили новый плагин/тему или написали код вручную, существует риск появления лишних пробелов в файле. Эти, казалось бы невинные пробелы, могут обернуться ошибкой WordPress Warning: cannot modify header information – headers already sent by.
В этом руководстве, мы рассмотрели как исправлять такие ошибки, и теперь ваш сайт опять работает как и положено. Больше руководств по WordPress можно найти в разделе руководств WordPress.
Коментарі
August 17 2018
Спасибо вам огромное! Очень помогли!!)
May 06 2019
Очень полезная и подробная статья
December 20 2019
Вариант 3 Header(“Location: ”) ошибка: Warning: Cannot modify header information если перед вызовом ф-и header есть вывод чего-либо.
June 11 2020
Решило проблему, большое спасибо.
December 18 2020
Спасибо большое очень хорошее описание, очень помогло. Спасибо!
October 16 2021
Три дня мучался, а оказывается дело в пробеле )