примечание: есть аналогичный вопрос но это про 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.
У меня была такая же проблема, и я обнаружил, что это потому, что 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.