Вот мой файл. Я хочу перенаправить его, но ничего не происходит. Чтобы проверить, что происходит, я добавил эхо перед частью заголовка.
Он не вызывает ошибку или не перенаправляет index.php. Что не так? Я включил / выключить буферизацию вывода, но ничто не делает перенаправление. Что я могу сделать?
<? error_reporting(E_ALL); echo 'This is an error'; header("Location: login.php"); die(); ?>
благодаря
Из документации PHP :
header()
должен быть вызван до отправки любого фактического вывода либо с помощью обычных тегов HTML, пустых строк в файле, либо из PHP.
И в вашем случае вы используете echo
перед header()
Я напомнил себе, что у меня установлен xDebug на реальной тестовой среде, и после его поиска я нашел этот сайт: http://bugs.xdebug.org/view.php?id=532
Поэтому я загружу последнюю версию xDebug и изменил php.ini соответственно для нового файла, и все работает как шарм. Отправляются заголовки – выполняется redirecionion и отображаются ошибки.
Спасибо всем за вашу помощь!
У вас есть короткие теги? попробуйте с длинным тегом <?php
:
<?php error_reporting(E_ALL); header("Location: login.php"); die(); ?>
Включен ли display_errors?
@Gumbo – Это точно!
ну, конечно, нет. потому как
Чтобы проверить, что происходит, я добавил эхо перед частью заголовка.
если вы включили display_errors, он отобразит ошибку, по крайней мере, когда вы turned output buffering on
.
Поэтому прежде всего убедитесь, что вы видите сообщения об ошибках.
просто распечатайте неопределенную переменную,
error_reporting(E_ALL); echo $undef9306;
Я уверен, вы не увидите этого. Таким образом, вы должны отображать ошибки на
Далее, на стороне сервера вы можете использовать функцию headers_sent()
чтобы увидеть, были ли отправлены заголовки. На стороне клиента используйте сниффер HTTP, чтобы узнать, отправлено ли что-либо
И проверьте свой файл для спецификации.