Страница 1 из 1

Не отображает 'cannot modify header information'

Добавлено: 26 окт 2021, 02:28
Alex-platinum
Здравствуйте!
Столкнулся с такой проблемой, когда идёт вывод html клиенту и заголовки могут отправляться и при этом не выдаёт ошибку.

Хотелось бы видеть ошибку 'cannot modify header information — headers already sent by ...' чтобы знать наверняка где ошибка, но она игнорируется и код выполняется дальше. А на хостинге конечно выдаёт варнинг.

Т.е. данный код не выдаст никаких ошибок и выведет 123123 соответственно.
<?php
header("");
echo 123;
header("");
echo 123;
вроде как вывод ошибок включён как E_ALL, да и даже если бы вывод ошибок не был включен, то после warning'а поидее php должен вывести только '123' в данном случае.

Re: Не отображает 'cannot modify header information'

Добавлено: 26 окт 2021, 08:13
Максим
Так и должно быть.

Попробуйте такой код:
header("");
echo '123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering123output_buffering';
header("");
echo 123;
и этот код уже будет ругаться. А всё потому, что по умолчанию в PHP включён output_buffering и благодаря этой буферизации заголовки не отправляются до заполнения буфера, соответственно их можно модифицировать.

Re: Не отображает 'cannot modify header information'

Добавлено: 26 окт 2021, 12:51
Alex-platinum
Максим писал(а): 26 окт 2021, 08:13 Так и должно быть.

Попробуйте такой код:
header("");
...
header("");
echo 123;
и этот код уже будет ругаться. А всё потому, что по умолчанию в PHP включён output_buffering и благодаря этой буферизации заголовки не отправляются до заполнения буфера, соответственно их можно модифицировать.
Да я понимаю что это не ошибка openserver. Мне нужно было чтобы данная ошибка отображалась, чтобы при переезде проекта на хостинг не возникло проблем.
Спасибо за подсказку!

Решил проблему выключением буфера в php.ini:
;output_buffering             = 4096