Назад | Перейти на главную страницу

Перенаправление заголовка PHP работает в nginx, даже если вывод отправлен

примечание: есть аналогичный вопрос но это про Apache.

Следующий код

<?php
echo '.';
header('Location: http://stackoverflow.com');

полностью 'работает' под nginx 0.7.67, где 'работает' означает, что перенаправление php работает нормально без ошибок в журнале ошибок или отображения ..

Как я могу заставить nginx или php-fpm выбросить PHP Warning: Cannot modify header information - headers already sent by предупреждение?

Вы должны проверить значение output_buffering параметр в вашем файле php.ini.

php.ini # буферизация вывода

У меня была такая же проблема, и я обнаружил, что это потому, что header("Status: 200 OK", false, 200); перед заголовком для перенаправления. Поэтому я добавил условие, чтобы не отображать заголовок 200, если я знаю, что мне придется перенаправить:

if(!isset($_GET['utm_source'])) { //Header will be Redirect 301 from global_cookies.inc.php
    header("Status: 200 OK", false, 200);
}

Заметка: С Apache у меня не было этой проблемы, и я мог перенаправить даже после заголовка 200.