Решение ошибки
PHP Cannot modify header information
Ошибка появляется, когда PHP пытается отправить HTTP-заголовок после того, как в ответ уже попал HTML, пробел, BOM или другой вывод.
Точный текст ошибки
Warning: Cannot modify header information - headers already sent
Причины
- Перед header() уже был echo, HTML или пробел вне PHP-тега.
- Файл сохранен с BOM.
- Редирект выполняется после подключения шаблона.
- Сессия стартует после вывода контента.
Минимальный пример
<?php
echo 'Привет';
header('Location: /login');
exit;Исправленный код
<?php
header('Location: /login');
exit;
echo 'Этот код уже не выполнится';Версии окружения
PHP 7.4, 8.0, 8.1, 8.2, 8.3
Альтернативные решения
- Перенесите редирект до вывода HTML.
- Проверьте файлы на BOM.
- Используйте output buffering только как временное решение.
- Стартуйте session_start() до вывода страницы.
Данные из первоисточников