Необычная ошибка «Заголовки уже отправлены». Без пробелов и изменения заголовка - PullRequest
2 голосов
/ 16 июля 2011

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

Я работаю над плагином WordPress и получаю следующую ошибку при отправке моих страниц редактирования:

Warning: Cannot modify header information - headers already sent by (output started at ***\wp-content\plugins\***\meta-class-load.php:1067) in ***\wp-includes\pluggable.php on line 934

Отличие этой ошибки в том, что строка, на которую она ссылается, не взаимодействует с заголовком и не выводит содержимое раньше. Я проверил наличие пробелов вокруг php-тегов, и их нет: P

Это содержимое (и окружающее) строки 1067:

        $name = $field['id'];
        $type = $field['type'];
        $old  = $this->get_meta($post->ID, $field); // THIS IS THE LINE
        $new = isset($_POST[$name]) ? $_POST[$name] : ($field['multiple'] ? array() : '');

Любые идеи или решения будут полезны. Спасибо!

Ответы [ 3 ]

1 голос
/ 16 июля 2011

Никогда ничего не выводите перед отправкой HEADER, если вы это сделаете, вы не сможете отправить заголовок, и он выдаст ошибку!
Также рекомендуется установить error_reporting(0) на рабочем сервере вубедитесь, что ошибка не отображается до header

0 голосов
/ 16 июля 2011

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

Чтобы предотвратить ошибку, вы можете попробовать вызвать либо ob_clean (); или ob_end_clean (); очистить буфер вывода прямо перед вызовом заголовка. ob_end_clean (); почти всегда успешен в этих случаях.

0 голосов
/ 16 июля 2011

1067 - это строка, которая выводит контент. Строка 934 является той, которая устанавливает заголовок. Я думаю, что они у вас задом наперед.

...