От автора: в этом уроке мы рассмотрим, пожалуй, одну из наиболее распространенных ошибок, с которой сталкиваются при программировании на PHP. Эта ошибка возникает при работе с функциями, связанными с отправкой заголовков. При этом мы можем столкнуться с несколькими вариантами сообщений об ошибке, но причина у них будет одинакова – заголовки уже отправлены (headers already sent).
В видео версии урока вы найдете подробное описание вариантов возникновения данной ошибки. Здесь же мы сформулируем вкратце причины и способы решения данной ошибки.
Итак, ошибка эта может возникнуть в случаях, когда в коде вы используете одну из функций, связанных с отправкой заголовков: header(), session_start(), setcookie().

Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!Причина ошибки заключается в том, что перед данными функциями в коде где-то есть вывод в браузер. При этом выводом в браузер считается любой символ, даже пробел или перенос строки, которые можно увидеть в исходном коде.
Соответственно, решение проблемы заключается в том, что этот вывод нужно убрать. Варианты вывода могут быть следующими:
собственно вывод, который прописан в коде: это может быть пробел, перенос строки, HTML-код и т.д.
вывод в подключаемых файлах
сохранение документа в кодировке UTF-8 с BOM. Это наиболее неочевидная проблема и здесь стоит помнить, что при использовании юникода файл должен быть сохранен в кодировке UTF-8 без BOM.
На этом мы завершим текущий урок. Удачи и до новых встреч!

Разработка веб-приложения на PHP
Создайте веб-приложение на PHP на примере приема платежей на сайте
Смотреть
Очень поучительный урок!!! Вообще тема ошибок очень интересная и нужная так как зачастую просто не понимаешь почему есть эта ошибка и начинает кепеть голова и работа стопориться на часы а то и на дни, а теперь хотябы с этой ошибкой будет понятно. Побольше бы на эту тему уроков. БОЛЬШОЕ ВАМ СПАСИБО мастера Webformyself!!!
Пожалуйста)
Я согласен, такие ошибки особенно те что часто встречаются нужно рассматривать это очень нужная часть уроков.
Да я так же заметил что даже не регистрировавшийся на сайте над моим сообщение появилось ава которую я загружал в другом сервисе (название не помню). Не подскажите как называется сервис?
Да, конечно, — этоGravatar .
Послушал Ваш видеоурок «Исправляем ошибку headers already sent by», однако решения проблемы так и не нашел.
Пытаюсь вывести графики JPGraph, но тщетно. При использовании стандартного примера из дистрибутива получаю сообщение: «JpGraph Error: HTTP headers have already been sent.
Caused by output from file test.php at line 6.» При этом по вашему совету убрал все, что можно и даже тег . Код php начинается сразу после :
<?php require_once ('src/jpgraph.php');
require_once ('src/jpgraph_scatter.php');
Может быть у Вас есть решение? Кроме того, на странице сайта должны быть какие-то надписи, или это исключено?
Если PHP говорит, что заголовки уже отправлены, значит так оно и есть. Поэтому нужно искать вывод в браузер. Решения у меня нет, поскольку Вашего кода, который можно запустить, у меня нет.