Решение ошибки

PHP Cannot modify header information

Ошибка появляется, когда PHP пытается отправить HTTP-заголовок после того, как в ответ уже попал HTML, пробел, BOM или другой вывод.

Точный текст ошибки

Warning: Cannot modify header information - headers already sent

Причины

  • Перед header() уже был echo, HTML или пробел вне PHP-тега.
  • Файл сохранен с BOM.
  • Редирект выполняется после подключения шаблона.
  • Сессия стартует после вывода контента.

Минимальный пример

PHP
<?php
echo 'Привет';
header('Location: /login');
exit;

Исправленный код

PHP
<?php
header('Location: /login');
exit;

echo 'Этот код уже не выполнится';

Версии окружения

PHP 7.4, 8.0, 8.1, 8.2, 8.3

Альтернативные решения

  • Перенесите редирект до вывода HTML.
  • Проверьте файлы на BOM.
  • Используйте output buffering только как временное решение.
  • Стартуйте session_start() до вывода страницы.

Данные из первоисточников

Свежие обновления по теме

Вся лента

2.10.3

2.2.30