Мой код прост:
<!DOCTYPE html> <html> <head> ... <?php var_dump(headers_sent()); ?>
Он возвращает false. Не следует ли отправлять заголовки сразу после печати? Как сразу после первого символа.
Это зависит от вашей директивы output_buffering
в файле php.ini
. Если это Off
output_buffering = Off
то echo headers_sent()
должен выводить 1
В других случаях headers_sent()
не будет выводить никаких результатов, потому что это будет FALSE. Заголовки не будут отправляться, потому что вывод буферизирован.
Если вы хотите обойти это и форсировать отправку заголовков, вы можете использовать flush()
.
Надеюсь это поможет!
Прочитайте комментарии в документах!
Здесь, например: http://es1.php.net/manual/en/function.headers-sent.php#75835
Он делает большую экспозицию: P
редактировать
Да, headers_sent () вернет false, даже если вы отправили что-то в Ouptut, используя print () или header (), если output_buffering отличается от Off в php.ini, а длина отправляемого вами не превышает размер вывода. […] Это замечается в комментарии php.ini: «Буферизация вывода позволяет отправлять строки заголовков (включая файлы cookie) даже после отправки содержимого тела в цене медленного замедления выходного уровня PHP».
Мне удалось найти способ без деактивации output_buffering:
if (!headers_sent() && !ob_get_contents()) { // do your thing }