Подтвердить что ты не робот

Размещение заголовка PHP-заголовка не работает - почему?

Вот мой файл. Я хочу перенаправить его, но ничего не происходит. Чтобы проверить, что происходит, я добавил эхо перед частью заголовка.

Он не выдает ошибку или не перенаправляет на index.php. Что не так? Я включил/выключить буферизацию вывода, но ничто не делает перенаправление. Что я могу сделать?

<?
error_reporting(E_ALL);
echo 'This is an error';

header("Location: login.php");
die();
?>

Спасибо

4b9b3361

Ответ 1

Я напомнил себе, что у меня установлен xDebug на реальной тестовой среде, и после его поиска я нашел этот сайт: http://bugs.xdebug.org/view.php?id=532

Итак, я скачаю последнюю версию xDebug и соответственно изменил php.ini для нового файла, и все работает как шарм. Отправляются заголовки - выполняется redirecionion и отображаются ошибки.

Спасибо всем за вашу помощь!

Ответ 2

От Документация по PHP:

header() должен быть вызван до отправки любого фактического вывода либо с помощью обычных тегов HTML, пустых строк в файле, либо из PHP.

И в вашем случае вы используете echo до header()

Ответ 3

Есть ли у вас короткие теги? попробуйте с длинным тегом <?php:

<?php
error_reporting(E_ALL);
header("Location: login.php");
die();
?>

Ответ 4

Включен ли display_errors?
@Gumbo - Это точно!

ну, это точно. потому что

Чтобы проверить, что происходит, я добавил эхо перед частью заголовка.

если вы включили display_errors, он выведет ошибку, по крайней мере, когда вы turned output buffering on.

Итак, прежде всего убедитесь, что вы видите сообщения об ошибках.
просто распечатайте переменную undefined,

error_reporting(E_ALL);
echo $undef9306;

Я уверен, вы его не увидите. Таким образом, вы должны отображать ошибки на

Далее, на стороне сервера вы можете использовать функцию headers_sent(), чтобы увидеть, были ли отправлены заголовки. На стороне клиента используйте сниффер HTTP, чтобы узнать, отправлено ли что-либо.

И проверьте свой файл для спецификации.