Вот полезная статья cannot-modify-header-information.ru/
Из очевидных причин:
вывод основного содержимого, после чего идет вызов функции header() и/или setcookie()
Из не очевидных причин :
Цитата |
---|
Отправка основного содержания уже началась, т.к. перед тегом <?php вставлена пустая строка или пробел.
А все, что перед <?php - интерпретируется как HTML-код основного содержания |
Цитата |
---|
В начале файла подключается другой файл, в котором идет отправка основного содержания либо явно (функциями echo или print), либо неявно, как в предыдущем варианте с пробелом или пустой строкой |
Цитата |
---|
Дело в том, что свой файл PHP вы можете создать в кодировке UTF-8, и некоторые редакторы кода в начало файла запишут дополнительный специальный символ, идентификатор UTF-8. В редакторе он отображаться не будет, а вот сервер, который будет обрабатывать этот файл, может его принять просто за одиночный символ и вывести его сразу после заголовков. Этот символ тоже может вообще никак не отобразиться в браузере, но если посмотреть исходный код страницы, можно увидеть дополнительный отступ или знак "?" перед основным содержимым (обычно перед тегом BODY) Соответственно, если такой символ выводится, а в файле есть функция Header(), то это и приведет к появлению ошибки Cannot modify header information - headers already sent by. Увидеть этот символ, в виде знака ?, квадратика или пробела можно, открыв файл в обычном блокноте. Чтобы избавиться от этой проблемы, в настройках своего редактора PHP найдите и отключите вставку этого идентификатора. Оставшийся 1% случаев - это неправильные настройки сервера или PHP интерпретатора. Скорее всего вы с этим вряд ли столкнетесь.
|
PS. Цитаты из этой статьи.