|
Почетный модератор
11561 / 4356 / 453
Регистрация: 12.06.2008
Сообщений: 12,457
|
|||||||||||||||||||||||||||||||||||||||||
Что означает предупреждение "headers already sent"09.08.2011, 11:14. Показов 108252. Ответов 76
На форуме часто бывают вопросы, что при использовании session_start(), header() и setcookie() и некоторых других функций, появляется сообщения типа
Если кому интересны подробности, то вот немного теории
Давайте разберёмся, что происходит, когда мы заходим на сайт. Например, когда мы в браузере открываем страницу http://www.example.ru/file.php, то браузер запрашивает у DNS сервера, какой IP адрес принадлежит серверу www.example.ru. После этого он подключается по протоколу TCP к этому IP адресу на порт 80 (этот порт используется по умолчанию для HTTP) и отправляет текстовый запрос наподобие такого:
Так же обязательным является параметр Host. Т.к. на каждом сервере может быть несколько разных сайтов, то мы должны указать, к какому именно сайту мы хотим обратиться. Остальные параметры необязательны... ими браузер просто рассказывает о себе (User-Agent) и рассказывает серверу, как он хочет общаться. Но сейчас речь не об этом... В ответ на этот запрос веб-сервер запускает выполнение нашего php-скрипта, к которому обращается браузер. И веб-сервер отправляет браузеру результат работы скрипта... но перед этим он отправит свои заголовки ответа.
И вот мы подошли к основной сути... когда PHP приказывает веб-серверу начать отправлять само содержимое брузеру, то веб-серверу не остаётся ничего, кроме как отправить вначале все заголовки, которые имеются у него на текущий момент. Поэтому после этого PHP уже не сможет изменить эти заголовки. Функция header() изменяет любой заголовок. Функция setcookie() добавляет куки к заголовку Set-Cookie, поэтому тоже не может работать после отправки заголовков. session_start() добавляет куки с идентификатором сессии (как в примере выше). А пока найдём пути решения этой проблемы. Чаще всего такие ситуации происходят из-за использования BOM. BOM - это 2 или 3 невидимых символа в начале файла. Эти символы указывают на то, какая используется кодировка. Многие текстовые редакторы по умолчанию добавляют BOM ко всем файлам юникодовской кодировкой (например UTF-8). Например, создадим в блокноте файл
Я вижу 2 пути решения это проблемы: 1. Включить в php.ini
2. Запретить текстовому редактору сохранять BOM. Но тут уже всё зависит от возможностей текстового редактора, который вы используете. Например, я пользуюсь Notepad++... там можно открыть меню "Кодировки" и выбрать "Преобразовать в UTF-8 без BOM". Если вы уверены, что BOM не используется, значит где-то перед функциями header(), setcookie() и т.п. вы сами отправляете данные пользователю. Возможно, перед открытием тега <?php есть пустая строка... её тоже нужно убрать. Если вначале вам необходимо отправлять данные, то можно включить использование буфера, что бы данные не отправлялись сразу браузеру:
57
|
|||||||||||||||||||||||||||||||||||||||||
| 09.08.2011, 11:14 | |
|
Ответы с готовыми решениями:
76
Что означает предупреждение " comparison between signed and unsigned integer expressions" Выходит предупреждение headers already sent by Событие A означает, что извлечены 3 зеленых, а событие В - извлечены 3 красных леденца. Что означает сумма А или B? |
|
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
|
|
| 09.09.2018, 20:30 | |
|
CyberX346, очень деструктивные мысли. Я лично не понимаю, как можно написать какую-то там CMS, не изучив основы протокола. А потом как угодно изворачиваться, лишь бы не признавать свою фундаментальную ошибку и исправлять ее основательно.
0
|
|
|
0 / 0 / 0
Регистрация: 09.09.2018
Сообщений: 9
|
|
| 09.09.2018, 20:34 | |
|
output_buffering*boolean/integer
You can enable output buffering for all files by setting this directive to 'On'. If you wish to limit the size of the buffer to a certain size - you can use a maximum number of bytes instead of 'On', as a value for this directive (e.g., output_buffering=4096). This directive is always Off in PHP-CLI. Можем свериться? Я сейчас в больнице и у меня нет возможности постоянно ноутбук использовать. Предлагаю в качестве расследования выложить вашу конфигурацию сервера и параметр настройки. Интересует Cent os и ubuntu. Настройки мамп я тоже выложу. У меня не работало именно на ubuntu lamp и, если там стоит off или php в режиме cli то тогда все обьяснимо.
0
|
|
|
0 / 0 / 0
Регистрация: 09.09.2018
Сообщений: 9
|
||||||
| 13.09.2018, 09:12 | ||||||
|
Вот. Выбрался на выходные из госпиталя и решил сразу проверить(с ноутбуком наконец-то).
Собственно реально все правда: если параметр выключить в htaccess у меня перестает работать авторизация. при
Все работает как надо. Видимо дело в моей недоосведомленности(да и не только моей) потому, что хостеры на этот простейший вопрос разводят руками и ничего внятного ответить не могут. Ну а теперь моя CMS пригодна для любого хостинга. Всем спасибо
0
|
||||||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
|||
| 13.09.2018, 11:17 | |||
|
1
|
|||
|
0 / 0 / 0
Регистрация: 09.09.2018
Сообщений: 9
|
|
| 13.09.2018, 12:30 | |
|
Ага. Только нагенерировать 4к до заголовков это еще проблема.
0
|
|
|
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
|
|
| 13.09.2018, 12:45 | |
|
CyberX346, можете "вечно дрожать" или надеяться на авось.
0
|
|
|
0 / 0 / 0
Регистрация: 09.09.2018
Сообщений: 9
|
|
| 13.09.2018, 14:41 | |
|
Учиться программировать чтобы не выходить за 4к или брать году. Я цистерна писал на спор за 3 месяца по приколу. Еще неделю писал форум к ней. Правда до сих пор с ним и парюсь. А вам я не знаю чего пожелать. Разве что зарплаты тысяч так 80 хотя бы чтобы легче было...
0
|
|
|
0 / 0 / 0
Регистрация: 04.05.2019
Сообщений: 2
|
|
| 04.05.2019, 15:48 | |
|
кто нибудь умеет работать в лабвью?
0
|
|
| 04.05.2019, 17:28 | |
|
0
|
|
|
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
|
|
| 28.05.2019, 18:25 | |
|
Приветствую, форумчане.
Столкнулся сегодня со странной историей. Если в <head> есть строчка <meta name="description" content=""> (именно такая, причем неважно - копипасченная или переписанная "от руки", то Cannot modify header information – headers already sent. Если я стираю только эту строчку - ошибка исчезает. Перепечатывал от руки, вставлял из других рабочих файлов. Кодировки, кавычки, пробелы внутри, пробелы до и после строчки, наличие символов из кириллицы, паразитные символы - все проверено. Идет реакция чисто на текст, такое ощущение :-) Решил пока ob_start'ом, но докопаться хочется и надо. Буду благодарен за помощь, спасибо.
0
|
|
|
Почетный модератор
11561 / 4356 / 453
Регистрация: 12.06.2008
Сообщений: 12,457
|
||
| 29.05.2019, 00:20 [ТС] | ||
|
0
|
||
|
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
|
||
| 29.05.2019, 00:23 | ||
|
Все одно и то же.
0
|
||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 29.05.2019, 00:33 | |
|
AlexNewaro, значит неправильно организовано приложение - отправка тела ответа перед заголовками, в сочетании с директивой output_buffering. Добавляя текст превышается значение заданное в данной директиве и ошибка себя проявляет.
1
|
|
|
Почетный модератор
11561 / 4356 / 453
Регистрация: 12.06.2008
Сообщений: 12,457
|
|
| 29.05.2019, 00:36 [ТС] | |
|
А если вместо этой строки добавить столько же пробелов? Может, там просто эта строка добавляет размер и переполняет буфер.
Иначе сравнивайте кодировку и наличие BOM. Добавлено через 40 секунд Не успел... Jewbacabra опередил
1
|
|
|
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
|
|||
| 29.05.2019, 00:40 | |||
|
Всем огромное спасибо за помощь!
0
|
|||
|
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 72
|
||||||
| 17.09.2019, 23:22 | ||||||
|
Можете помочь.
У меня вылезла ошибка cannot modify header information В 35 в 36 и 38 строках где куки. По пробывал способ сохранения без BOM,не помогло,как решить ее?
0
|
||||||
|
Почетный модератор
11561 / 4356 / 453
Регистрация: 12.06.2008
Сообщений: 12,457
|
||
| 18.09.2019, 00:54 [ТС] | ||
|
Так же проблема может быть, если одна из вызываемых функций выведет предупреждение. Но, думаю, вы бы это заметили.
0
|
||
|
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 72
|
|||||||||||
| 18.09.2019, 00:59 | |||||||||||
|
Humanoid, Я кодировки поменял.
Теперь у меня другая проблема с скриптами. У меня не выводит логин авторизованного человека. Вместо него выводит Xm.Что-то не получилось Это скрипт проверки
0
|
|||||||||||
|
Почетный модератор
11561 / 4356 / 453
Регистрация: 12.06.2008
Сообщений: 12,457
|
||
| 18.09.2019, 11:49 [ТС] | ||
|
NitrailS, не знаю. Предлагаю выводить отладочную информацию и анализировать, какое именно условие не подошло. Например, там, где вы выводите сообщение "что-то пошло не так" заодно через var_dump() выводите куки, _SERVER и userdata. После этого смотрите, какое значение оказалось неожиданным. Если не будет получаться, то создайте новую тему с вопросом... кто-нибудь, возможно, поможет. Просто, самому разобраться будет быстрее, чем ждать других людей.
0
|
||
|
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 1
|
|
| 24.09.2019, 14:59 | |
|
$&&& = mysqli_real_escape_string(); - это функция очистка от спец символов. Попробуй просто $&&& = rtrim();
Добавлено через 2 минуты А Humanoid - респект!
0
|
|
| 24.09.2019, 14:59 | |
|
Постоянные ошибки с сессиями (headers already sent и Cannot modify headers) Что означает появление письменности (языка), и что означает реформа письменности (языка)? Что означает, что определение метода находится внутри определения класса? Поясните пожалуйста что означает двоеточие и то что идет после него Что такое dy1 и dy2 в программе, и зачем мы их перемножаем. Что означает строчка x=x1 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|