Откуда «Cannot modify header information — headers already sent by»?

Всё дело происходит в админке. На одном сайте сделал плагин, там создаётся некая база пользователей. Логика простая - кнопка "новый пользователь", форма, отправка, проверка и запись в БД, перадресация на список пользователей. Всё работает.

Теперь делаю плагин на другом сайте с таким же функционалом, только сейчас это словарь терминов. Логика та же самая, просто копирую куски кода на другой сайт и меняю название функций и таблиц в БД. Но здесь это не работает! Голову сломал уже почему там работает, здесь - нет.

Проблема возникает при отправке формы с данными. Скрипт должен записать в БД и переадресовать на начальную страницу плагина, но он зависает раньше переадресации. Редирект делаю с помощью PHP Header Location.

Собственно, этот Location и вызывает ошибку: "Warning: Cannot modify header information - headers already sent by (output started at /home/r/mysite/public_html/wp-includes/formatting.php:5652) in /home/r/mysite/public_html/wp-content/plugins/lp-dictionaries/lp-dictionaries.php on line 72."

В файле "dictionaries.php on line 72" и есть редирект.

Вот здесь "public_html/wp-includes/formatting.php:5652" находтся вот это:
<script<?php echo $type_attr; ?>>
			window._wpemojiSettings = <?php echo wp_json_encode( $settings ); ?>;
			!function(e,a,t){var r,n,o,i,p=a.createElement("canvas"),s=p.getContext&&p.getContext("2d");function c(e,t){var a=String.fromCharCode;s.clearRect(0,0,p.width,p.height),s.fillText(a.apply(this,e),0,0);var r=p.toDataURL();return s.clearRect(0,0,p.width,p.height),s.fillText(a.apply(this,t),0,0),r===p.toDataURL()}function l(e){if(!s||!s.fillText)return!1;switch(s.textBaseline="top",s.font="600 32px Arial",e){case"flag":return!c([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])&&(!c([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!c([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]));case"emoji":return!c([55357,56424,55356,57342,8205,55358,56605,8205,55357,56424,55356,57340],[55357,56424,55356,57342,8203,55358,56605,8203,55357,56424,55356,57340])}return!1}function d(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(i=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},o=0;o<i.length;o++)t.supports[i[o]]=l(i[o]),t.supports.everything=t.supports.everything&&t.supports[i[o]],"flag"!==i[o]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[i[o]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(r=t.source||{}).concatemoji?d(r.concatemoji):r.wpemoji&&r.twemoji&&(d(r.twemoji),d(r.wpemoji)))}(window,document,window._wpemojiSettings);
		</script>


Этот фрагмент кода абсолютно идентичен на первом сайте, где всё работает как надо, и на втором, где все ломается.

На всякий случай сверил заголовки, которые выводятся на обоих сайтах, обнаружил разные версии PHP, сделал одинаковыми - проблема не решена. Вот этот заголовок:
array(6) { [0]=> string(23) "X-Powered-By: PHP/7.3.1" [1]=> string(38) "Expires: Wed, 11 Jan 1984 05:00:00 GMT" [2]=> string(51) "Cache-Control: no-cache, must-revalidate, max-age=0" [3]=> string(27) "X-Frame-Options: SAMEORIGIN" [4]=> string(48) "Referrer-Policy: strict-origin-when-cross-origin" [5]=> string(38) "Content-Type: text/html; charset=UTF-8" }


Вообще не пойму что за чертовщина. Как победить? Памагити!
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы