Почему спецификация вызывает предупреждение "заголовки уже отправлены"?

Обратите внимание, что это не дубликат. На кажущиеся дубликаты можно ответить "Просто сохраните без спецификации!" Мой вопрос, однако, почему?

Если я непреднамеренно сохраняю файл PHP с помощью спецификации и пытаюсь отправить заголовок изнутри PHP, я получаю

Предупреждение: невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод начался с file.php:1) в file.php в строке 1

Вы знаете рутину. И, конечно, это не происходит, когда файл сохраняется без спецификации.

Впрочем, и тут есть хитрость: это предупреждение встречается не везде! В моем случае это не происходит, когда я открываю файл из http://localhost/, но это происходит, когда я загружаю файл на свой веб-сайт и открываю его оттуда.

Так в чем же разница? Есть ли ошибка в моем локальном Apache или Apache на сайте? Будет ли проблема решена путем обновления глючного до последней версии? Или это может быть где-то проблема конфигурации, которая может быть решена путем редактирования INI-файла?

1 ответ

Скорее всего, на вашем локальном хосте включена неявная буферизация вывода.

Кроме того, detect_unicode может стоить проверить.

Другие вопросы по тегам