Почему в PHP выдается ошибка: Cannot send session cache limiter — headers already sent?
Доброго времени суток, коллеги! Сегодня расскажу, как я боролся с этой ошибкой, о которой вы могли прочитать в заголовке поста. То, что вы читаете этот пост показывает, что вы тоже столкнулись с ней. А может у вас возникали и другие ошибки? Не стесняйтесь писать об этом в комментариях, я буду очень рад. Чтобы у нас было поменьше разных ошибок необходимо иметь опыт. Не правда ли? В конце статьи вы найдете, то что поможет вам его приобрести. А теперь приступим к нашей ошибке!
При написании:
<?php session_start(); ?>
Вышла ошибка:
Warning: session_start() [function.session-start]: Cannot send session cache limiter — headers already sent (output started at X:/home/localhost/www/phpbloguser/header.html:6) in X:/home/localhost/www/phpbloguser/blocks/global.inc.php on line 110
Оказывается в php.ini нужно директиву output_buffering поставить в «On» (по умолчанию — Off), см. php.ini. И всё получиться! Чтобы заработало нужно перезагрузить Ваш сервер.
Ещё эта ошибка возникает по другим причинам:
Нужно посмотреть, может есть пробел, таб, перенос строки перед «<?».
Кроме того, стартовать сессию нужно до того, как что-либо будет выведено в окно браузера. Так как идентификатор сессии в данном случае пишется в файлы cookie. Куки, в свою очередь, всегда устанавливаются через отправку заголовков — headers.
Здесь же написано, что заголовки УЖЕ были отправлены. Поэтому нужно проверить, не выводиться ли что-нибудь в окно браузера, до того как я стартую сессию с помощью session_start()?
Еще ваш php файл должен быть сохранен в кодировке UTF 8 (без BOM), если с BOM, то вначале файла всегда выводятся три символа, вот и возникает эта ошибка.
Автор!!! Ты КРАСАВА!!!! я перерыла кучу форумов, где все подряд вердили про кодировку Utf-8 без BOM
пока не залезла и не сменила директиву output_buffering в ON!!!
спасибо ЧЕЛОВЕЧЕСКОЕ
Пожалуйста, рад, что помог!
а что за php.ini?
Конфигурационный файл в папке сервера апаче, подробнее можете прочитать тут.
Спасибо огромное! У меня проблема заключалась всего лишь в лишнем пробеле перед <?php !!!!! А я уже десятки форумов перерыл и голова кругом была, весь код перелопатил
Вячеслав, рад, что вам помогла эта заметка! Успехов!
Спасибо большое! Статья помогла очень. Про этот пропуск перед <? догадаться вообще не реально. И самое смешное, что он в редакторе был не виден! Заметил я его только когда в другом редакторе открыл файл.
Здорово, что помогла статья, Николай!
Пожалуйста, Дмитрий!
Пропуски проверил, изменение файла не помогло
Изменил кодировку с UTF 8 на ANSI, ошибка исчезла
Сергей, здорово, что вы нашли свое решение!
Спасибо автору за статью! Оказалось у меня просто стоял пробел перед <? , впринципе особенно это ошибка не мешала (высвечивалась на заднем фоне сайта, но дискомфорт ощущался) ещё раз спасибо))))
Пожалуйста, Даниил!
Ай брат от души помогло с output_buffering в ON!!!
Везде пишут про UTF8 без bom
Неделю мучился
Респектуха тебе
Домик тебе в Польше, два красных порше, жену хорошую, детишек по-больше
Спасибо и вам всего доброго!
php.ini, output_buffering установил в ON и ошибка исчезла. Но появилась другая проблема — Все заголовки и текст превратились в абра-кадабру типа накомство. Понимаю что что-то с кодировкой но не пойму что. Кодировка всех файлов в UTF 8 (без BOM)
Странно, похоже на то, как-будто у вас была кодировка cp1251, а потом вы перевели на utf-8.
Подтверждаю, проблема решилась сменой опции output_buffering в On. Хотя другой проект исправно работал при такой конфигурации PHP.ini.
В любом случае, спасибо
Пожалуйста, рад помочь!
Создатель сайта, а можешь немного затемнить фон либо сам шрифт? Серый шрифт на сером фоне сложно читается.)
Спасибо за подсказку!
Спасибо, тоже парился. Ничего понять не мог. Забыл, что OpenServer переустанавливал.
Пожалуйста, Игорь! Рад, что статья помогла!
Редко пишу комменты но с этой проблемой мучился часа 3, проверял BOM и т.д. и не мог понять в чем дело, оказалось проблема в настройках PHP на сервере с «output_buffering = on».
Огромное спасибо бро!
Рад помочь! Пожалуйста!
где и как написать этот output_buffering в On
я чайник просто
Здравствуйте! В файле php.ini.
Спасибо большое!