Сеансы в PHP основаны на cookie (для передачи session_id
) .
Файлы cookie отправляются в виде заголовков HTTP.
Заголовки HTTP можно отправлять только в том случае, если выходные данные еще не отправлены.
Получаемое сообщение об ошибке указывает на невозможность отправки куки-файла сеанса, поскольку некоторые выходные данные уже отправлены.
Это означает, что вы должны быть уверены, что не отправили любой выход (даже ни одного пробела!) до вызова session_start()
.
Пара идей:
- убедитесь, что перед открывающим тегом php нет пустой строки
- убедитесь, что ваш PHP-скрипт не закодирован в UTF-8 с BOM (некоторые редакторы по умолчанию помещают это в начало файлов)
- т.е. повторно сохраните ваш файл (как UTF-8, почему бы и нет) , без спецификации
Как примечание: вы можете получить эту ошибку на некоторых серверах, а не на некоторых других, из-за конфигурации output_buffering
: если она включена (она выключена в вашем файле php.ini) , PHP будет хранить некоторые данные в памяти перед их отправкой - это означает, что заголовки могут быть отправлены, даже если небольшое количество данных, кажется, уже отправлено (На самом деле, этот небольшой объем данных сохраняется в память, а не сразу отправлено) .