Расположение заголовка PHP работает в середине HTML - PullRequest
4 голосов
/ 14 июня 2010

У меня проблемы с пониманием того, как header("Location: http://www.google.com/"); может работать в середине <body>.
HTML-страницы. Не должно быть ошибки, поскольку заголовок уже был отправлен из-за вывода HTML, задолго до того, как началась часть <?php ... ?>.

Я имею в виду предупреждение Cannot modify header information - headers already sent by..., которое я ожидаю получить.

Я тестирую это в своей локальной среде разработки PHP (Apache / 2.2.15 (Win32) PHP / 5.3.2).

Вот пример:

<html>
<head>
</head>
<body>
<?php header("Location: http://www.google.com/"); ?>
</body>
</html>

Есть идеи? Спасибо.

Ответы [ 4 ]

7 голосов
/ 14 июня 2010
2 голосов
/ 14 июня 2010

Если у вас есть буферизация вывода, автоматически включаемая в php.ini, вы можете отправлять заголовки в любое время до того, как вывод будет отправлен на самом деле.

1 голос
/ 14 июня 2010

Если у вас включена выходная буферизация (см. ob_start () ), никакой вывод не отправляется, пока вся страница не будет завершена.

0 голосов
/ 14 июня 2010

Я заметил это недавно, когда выполнял некоторые разработки с пакетом WAMP для Windows. Вызвала много адов, когда я перешел на запуск его на Linux-боксе. Я полагаю, что был установлен набор значений конфигурации, заставляющий его буферизовать все страницы.

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