Блог / Статьи12 сентября 2023; Обновлено 05 августа 2025

Как исправить ошибку «Невозможно изменить информацию о заголовке — заголовки уже отправлены» в Wordpress

Одной из распространенных ошибок, которая возникает при работе сайта на WordPress является "Cannot modify header information - headers already sent", или "Невозможно изменить информацию о заголовке - заголовки уже отправлены".

В общем ошибка выглядит так:

Warning: Cannot modify header information - headers already sent by (output started at /home/hadver/arto.agency/wp/wp-includes/script-loader.php:2838) in /home/hadver/arto.agency/wp/wp-content/themes/kadence/header.php on line 29. 

Отображение ошибки Cannot modify header information на сайте Wordpress

Поскольку это ошибка уровня Warning, то она не должна приводить к "белому экрану смерти", но сам факт ее появления является результатом неправильной работы сайта.

TL;DR. Данная ошибка возникает тогда, когда заголовки ответа HTTP по разным причинам начинают выводиться после того, как был осуществлен вывод тела ответа. Ниже мы более подробно описали это. Если же вы хотите сразу узнать о том, как исправить эту ошибку, то перейдите к этой секции.

Столкнулись с этой ошибкой?

Обращайтесь к специалистам нашего агентства и мы решим вашу проблему в течение нескольких рабочих часов!

Что такое HTTP-ответ?

Веб-сервер взаимодействует с клиентом (браузером) посредством протокола HTTP. Согласно этому протоколу ответ, который посылается клиенту, состоит из двух частей: заголовков (headers) и тела (body).

Тело, в большинстве случаев, является видимой частью. Это как раз и есть та самая страница веб-сайта, которую мы просматриваем в браузере. А вот заголовки без применения специальных программных инструментов невозможно увидеть.

Для чего нужны заголовки HTTP-ответа?

Заголовки HTTP-ответа являются простыми строками текста, которые могут содержать не только служебную информацию о странице, но и предоставлять определенные указания клиенту относительно нее. Они состоят из двух частей: названия заголовка и его значения. Их используют для различных целей, в частности:

  • предоставления информации о веб-странице: например ее кодировке и MIME типе контента;
  • управления кэшированием страницы и связанных с ней ресурсов;
  • перенаправления браузера на другой адрес;
  • управления файлами cookies;
  • отказа в доступе и т.д.

В чем же причина ошибки?

В соответствии с протоколом HTTP, заголовки всегда должны предшествовать телу ответа. Если же этот порядок нарушается, то есть заголовки начинают отправляться, когда уже начался фактический вывод тела, тогда и возникает ошибка "Cannot modify header information".

Однако, следует заметить, что сайты на Wordpress, как и другие сайты на php, имеют встроенный механизм буферизации вывода. Это означает, что тело ответа сначала может записываться в буфер, а не напрямую выводиться клиенту. В таком случае, даже если заголовки отправятся после вывода тела, ошибка может и не возникнуть. Однако если буфер переполнится, или будет очищен принудительно до вывода заголовков, то принцип их первенства нарушится, и появится ошибка.

Для упрощения, в дальнейшем мы будем пренебрегать механизмом буферизации.

Наиболее распространенные причины ошибки "Cannot modify header information"

Пробелы или символы табуляции перед открывающим тегом <?php

Одна из распространенных причин ошибки - наличие пробельных символов перед открывающим тегом <?php в php файлах. Несмотря на то, что пробел никак не визуализируется, сервер считает его началом вывода тела ответа. Соответственно, если после этого пробела где-то начинают выводиться заголовки, то появляется ошибка.

Символ табуляции в начале php файла

Стрелка указывает на символ табуляции, который находится перед открывающим тегом <?php в самом начале файла.

Выражения echo или print перед отправкой заголовков

Аналогично предыдущему случаю, если перед отправкой заголовков есть явный вывод данных с помощью выражений echo или print, то это может привести к ошибке.

Вывод текста выражением echo до отправки заголовка

Стрелка 1 указывает на вывод текста с помощью конструкции echo. Обратите внимание, что ниже находится функция (стрелка 2), которая отправляет заголовки.

Вывод html блока перед отправкой заголовков

Вывод HTML-кода перед отправкой заголовков является еще одной причиной этой проблемы. Такие случаи встречаются в файлах шаблонов Wordpress или частях шаблонов, где может быть большое количество разметки, и где организовывать вывод заголовков, с программной точки зрения, не является уместным.

Вывод html кода перед отправкой заголовка

Стрелка 1 указывает на вывод html кода. Ниже происходит (стрелка 2) отправка заголовков.

Поздняя попытка установки cookies

Поскольку cookies отправляются с сервера как заголовки, то попытка их установки уже после начала вывода тела, также может привести к появлению ошибки. В данном случае, как и предыдущем, отправка cookies пользователю должна быть запрограммирована на более ранних этапах работы веб-приложения, до вывода html.

Попытка установки cookies после вывода html контента

Стрелка указывает попытку установки cookies после вывода html кода

Поздний запуск php сессии

Сессии являются отличным механизмом обеспечения качественного взаимодействия веб-приложения и клиента. Без них трудно представить функционирование корзины в интернет-магазинах, вишлистов и других модулей, для которых нужно удерживать определенную информацию на время работы клиента с сайтом.

Если для управления сессиями на сайте используются встроенные возможности php, то, наиболее вероятно, запуск сессии будет осуществлен функцией session_start(). И здесь важно понимать одну вещь - для идентификации клиента сессии ему должны отправиться соответствующие cookies, а они, как мы уже выяснили, устанавливаются через заголовки. Поэтому если пытаться запустить сессию после того, как вывод тела уже начался, то это приведет к несколько иной по формулировке, но похожей по своей сути ошибке "Session_start(): Cannot start session when headers already sent in /home/hadver/arto.agency/wp/wp-content/themes/kadence/header.php on line 33".

Ошибка о невозможности запуска сессии после того, как заголовки уже были отправлены

При этом, код, который привел к такой ситуации может быть примерно таким:

Поздний запуск сессии

Стрелка указывает на запуск сессии после вывода html кода

Как исправить ошибку Cannot modify header: 4 способа

Для исправления ошибки нужно внести изменения в php файл, в котором она появилась. Но как понять, какой из сотен, а то и тысяч файлов сайта, стоит отредактировать? Все не так уж и сложно: стоит еще раз внимательно прочитать текст ошибки:

Warning: Cannot modify header information - headers already sent by (output started at /home/hadver/arto.agency/wp/wp-includes/script-loader.php:2838) in /home/hadver/arto.agency/wp/wp-content/themes/kadence/header.php on line 33.

Этот текст говорит нам о том, что вывод тела начат в файле script-loader.php на 2838-й строчке (output started at /home/hadver/arto.agency/wp/wp-includes/script-loader.php:2838), а заголовки после начала вывода тела пытается отправить файл header.php на строке 33.

Исходя из того, что мы узнали ранее в этой статье, наиболее вероятно, что редактировать придется файл script-loader.php. Возможно, там есть пробельный символ, незапланированный вывод html контента и т.д. Обратите внимание, что в тексте ошибки показаны полные абсолютные пути расположения файлов. Эта информация будет нам необходима при дальнейших шагах.

Давайте рассмотрим теперь, как мы можем самостоятельно отредактировать проблемный файл (-ы).

Редактирование через редактор темы в админке

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

Редактирование через FTP (Filezilla)

Если доступ к админ-панели невозможен или файл не находится в теме, вы можете отредактировать файл через FTP-клиент, например, FileZilla. Для этого вы должны узнать данные доступа к серверу по протоколу FTP. Вы можете найти их в панели управления хостингом/сервером. Введите логин и пароль, соединитесь с вашим сервером, найдите соответствующий файл по его пути, который указан в тексте ошибки, внесите изменения и сохраните их.

Переустановка или обновление плагина

Еще раз обратите внимание на абсолютный путь к файлу с ошибкой. Если вы увидите там /wp-content/plugins/, то ошибка вероятно связана с определенным плагином. Сразу после строчки /wp-content/plugins/ будет идти название папки плагина, по которой можно догадаться, как собственно плагин называется. Если у вас в работает админ-панель, то попробуйте просто обновить плагин, ведь если ошибка возникла по вине его разработчиков, то они, скорее всего, о ней уже знают и выпустили фикс. Если же плагин не имеет обновления, то можно наоборот попробовать откатить его, понизив версию. Если и это проблематично или админ-панель не работает, то придется исправлять ошибку вручную через FTP, как было описано выше.

Восстановление из бэкапа

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

Возможно вам нужна наша помощь?

Wordpress - наша страсть, это то, в чем мы разбираемся лучше всего. Не теряйте свое время, доверьте решение ваших проблем нашим специалистам!

Вместо заключения

Исправление ошибки "Cannot modify header information" не является чем-то сложным, главное правильно понять ее и внести соответствующие коррективы в файлы. Несмотря на это, иногда могут возникать более сложные ситуации, когда причиной появления ошибки является не случайное начало вывода тела, а ошибочно написанный код: неправильно инициализированная сессия или установка файлов cookies (как было описано выше) и т.д. В таком случае стоит изучать программную логику сайта и проводить более глубокий рефакторинг, который потребует привлечения квалифицированных специалистов.

Артем Охрей
Сооснователь Arto Web Agency, веб-разработчик
Работаю в сфере онлайн-бизнеса с 2012 года. Глубоко убежден, что любые детали имеют значение, и без их учета сложно добиться успеха в этой области. Регулярно делюсь своим опытом на профильных семинарах. Если у вас возникли вопросы по этой статье, пожалуйста, напишите мне на электронную почту artem@arto.agency.

Узнавайте о важном первыми!

Учебные материалы, важные новости, обзоры. Мы пишем вам тогда, когда действительно есть что сказать
КОММЕНТАРИИ
КОММЕНТИРОВАТЬ
ВОЙТИ
  • Facebook
  • Twitter
ЭТОТ САЙТ ИСПОЛЬЗУЕТ COOKIES
Мы используем cookies для анализа трафика, обеспечения функций социальных сетей и работы системы комментирования на сайте. Список устанавливаемых cookies находится на этой странице. Согласны ли вы на установку cookie?