Почему функция header () в php не выдает ошибку?

Я помещаю функцию заголовка после некоторого вывода, но я все еще отправляюсь в указанное местоположение.

 <!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>

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

Настройки output_buffering в php.ini все закомментированы

; output_buffering
;   Default Value: Off
;   Development Value: 4096
;   Production Value: 4096

Почему меня все еще перенаправляют на google.com?

0

Решение

 <?php ob_end_flush();
echo 'hello';
header('Location: http://www.google.com/'); ?>

Возможно, на сервере была включена буферизация вывода: буферизация вывода ничего не выдаст, пока скрипт не завершит работу. Как вы уже упоминали, что вы сделали OFF, поэтому вам нужно перезагрузить сервер снова. Это позволяет ему получить заголовок до фактического вывода (поскольку он знает, что заголовки должны быть отправлены первыми).

Если это имеет смысл.
редактировать

; Output buffering is a mechanism for controlling how much output data
; (excluding headers and cookies) PHP should keep internally before pushing that
; data to the client. If your application's output exceeds this setting, PHP
; will send that data in chunks of roughly the size you specify.
; Turning on this setting and managing its maximum buffer size can yield some
; interesting side-effects depending on your application and web server.
; You may be able to send headers and cookies after you've already sent output
; through print or echo. You also may see performance benefits if your server is
; emitting less packets due to buffered output versus PHP streaming the output
; as it gets it. On production servers, 4096 bytes is a good setting for performance
; reasons.
; Note: Output buffering can also be controlled via Output Buffering Control
;   functions.
; Possible Values:
;   On = Enabled and buffer is unlimited. (Use with caution)
;   Off = Disabled
;   Integer = Enables the buffer and sets its maximum size in bytes.
; Note: This directive is hardcoded to Off for the CLI SAPI
; Default Value: Off
; Development Value: 4096
; Production Value: 4096
; http://php.net/output-buffering
output_buffering = On

В php.ini вы найдете, как указано выше. Найдите ключевое слово «output_buffering» в файле php.ini. Оно должно быть где-то. Чтобы проверить это другим способом, используйте phpinfo(); на любой странице PHP и запустить эту страницу вы найдете output_buffering как «1» означает, что он включен. Таким образом, отключив его, вы можете остановить его на всю жизнь или на временный период, вы можете использовать ob_end_flush(); как я упоминал ранее.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]