|
Почетный модератор
11560 / 4354 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
|||||||||||||||||||||||||||||||||||||||||
Что означает предупреждение "headers already sent"09.08.2011, 11:14. Показов 107572. Ответов 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
|
|
|
Почетный модератор
11560 / 4354 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
||
| 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
|
|
|
Почетный модератор
11560 / 4354 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
|
| 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
|
||||||
|
Почетный модератор
11560 / 4354 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
||
| 18.09.2019, 00:54 [ТС] | ||
|
Так же проблема может быть, если одна из вызываемых функций выведет предупреждение. Но, думаю, вы бы это заметили.
0
|
||
|
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 72
|
|||||||||||
| 18.09.2019, 00:59 | |||||||||||
|
Humanoid, Я кодировки поменял.
Теперь у меня другая проблема с скриптами. У меня не выводит логин авторизованного человека. Вместо него выводит Xm.Что-то не получилось Это скрипт проверки
0
|
|||||||||||
|
Почетный модератор
11560 / 4354 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
||
| 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 | |
|
Помогаю со студенческими работами здесь
60
Постоянные ошибки с сессиями (headers already sent и Cannot modify headers) Что означает появление письменности (языка), и что означает реформа письменности (языка)? Что означает, что определение метода находится внутри определения класса? Поясните пожалуйста что означает двоеточие и то что идет после него Что такое dy1 и dy2 в программе, и зачем мы их перемножаем. Что означает строчка x=x1 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|