буферизация вывода — PHP output_buffering работает только с ошибкой error_reporting (E_ALL)

У меня есть скрипт PHP, это часть:

if($signature == $params_signature) {
error_reporting(E_ALL);
ini_set('display_errors', 1);
ob_start();
echo 'OK'; // send the OK response
header('Connection: close');
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header("Content-Encoding: none");
header('Content-Length: '.ob_get_length());
ob_end_flush();
ob_flush();
flush();
echo 'test';
// some further procesiing
exit;
}

Итак, проблема в том, что ob_start () работает правильно только в настройках error_reporting:

error_reporting(E_ALL);
ini_set('display_errors', 1);

В этом случае вывод «OK», но если я удаляю error_reporting, вывод выводится «OKtest».

Проблема в том, что я не могу оставить сообщение об ошибке на производственном сайте, и я не могу выяснить причину, почему это происходит.

Может быть, нужна дополнительная информация ?!

ОБНОВЛЕНИЕ: Ожидаемое поведение: sctipt отправляет ответ со статусом 200 и body — «ОК», закрывает соединение и продолжает выполнять некоторые внутренние операции.

0

Решение

Приведенный ниже код работает без error_reporting:

<?php
ob_start();
echo 'OK'; // send the OK response
header('Connection: close');
header('Content-Type: text/html; charset=utf-8');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header("Content-Encoding: none");
header('Content-Length: '.ob_get_length());

echo 'test';
// some further procesiing

exit;
?>

Я удалил это до вашего последнего эха,

ob_end_flush();
ob_flush();
flush();
0

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

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

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