Блог / Статті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?