Перенаправление заголовка php работает даже после запуска вывода - PullRequest
0 голосов
/ 05 июня 2018

Я думал, что вы не можете перенаправить, используя header('location:.. в php, если вы уже отправили какой-то вывод.Однако эта тестовая программа работает (не) ожидаемо с локальным сервером.

$ cat > index.php
Hello,
<?php

if ($_SERVER['REQUEST_URI'] !== "/") {
  header('location: /');
  die();
}

?>
World!

, а затем я запускаю локальный сервер php, как это

$ php -S localhost:8000

, а затем, когда я иду наhttp://localhost:8000/index.php?test=1 он перенаправляет меня на http://localhost:8000.

Почему он не жалуется, что я уже отправил вывод?это что-то другое о PHP 7?Что-то другое в современных браузерах?Что-то другое в демо-сервере?Или мне нужно сделать что-то немного другое, чтобы получить ошибку, которую я получил в прошлый раз, когда использовал php?

1 Ответ

0 голосов
/ 16 июня 2018

Я попробовал ваш сценарий, и для меня он сообщил об ожидаемом предупреждении «Не удается изменить заголовок» и вывел только «Hello».

Главное, что может отличаться для вас, это output_bufferingпеременная в вашем php.ini - если она не отключена, то она автоматически буферизует вывод до определенного размера.Поэтому убедитесь, что для него установлено значение «Вкл.» Или что-то вроде 4096. Значение по умолчанию, если «Выкл.», Но есть много примеров конфигураций, где он включен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...