Когда PHP говорит, что заголовки уже отправлены, это означает, что некоторый текст уже был выведен скриптом (или скриптом, который его вызвал). Это включает в себя все сообщения об ошибках.
Когда ПЕРВЫЙ фрагмент текста выводится PHP, он отправляет свои заголовки, но не раньше. Чтобы получить HTTP-куки (часть заголовков), куки должны быть отправлены до вывода любого текста.
Что вы можете сделать, это включить буферизацию вывода, используя ob_start
и ob_end_flush
и другие функции управления выходом.
Также вы можете установить переменную php.ini для автоматической отправки заголовка файла cookie при выводе текста.