Я очень хочу увидеть предупреждение PHP "Невозможно изменить информацию заголовка". Зачем? Потому что это разумно. Вы не должны иметь возможность отправлять заголовки после тела.
Но я могу !! Если я отлаживаю некоторые vars в контроллере и сразу не выполняю exit
, скрипт просто перенаправляет на следующую страницу: все идет «хорошо», и я не вижу свои вар-дампы.
Где в PHP я могу настроить (?), Чтобы он не буферизовал вывод? Или что бы это ни было странное поведение!
Просто чтобы прояснить: я DO хочу предупреждение PHP, а я НЕ хочу, чтобы перенаправление header('Location: ...')
работало.
Я почти уверен, что на моем предыдущем (локальном) сервере (оба W XP) он выдавал вывод / заголовок Предупреждение ...
редактировать
Для иллюстрации, с самым базовым кодом (который я буквально не использую, но косвенно это то же самое):
$form->validate($_POST);
var_dump($form->errors); // !!
if ( $form->noErrors ) {
header('Location: '.$form->redirectUrl);
exit;
}
ответы
@Heandel Сообщения об ошибках - это все (включая уведомления и устаревшие и т. Д.). Не должно иметь значения: отправка заголовков должна быть невозможной независимо от отображаемой ошибки.
@ tandu Я использую мой собственный фреймворк , но это тоже не имеет значения.
@ ceejayoz В моем коде нет ни одного ob_start. Я не использую это. (Шаблон ngin использует его, но шаблон не запускается при обратной передаче.)
@ Итай Моав Я не на общем хостинге. Я работаю локально на PHP 5.3.0 (WAMP) на Windows XP SP2. На моем веб-сервере (VPS) этого не происходит: я получаю приятное предупреждение PHP.
UPDATE
Спасибо, Гален
От php.ini:
; 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
Включив его Off
сделал свое дело. Я не хочу никакой автоматической буферизации вывода. Спасибо!