PHP: <?php namespace core; use app\actions\error\ErrorAction; use Exception; use Throwable; class ErrorHandler { public function __construct($mode, $logs) { // ob_start(); set_error_handler(function ($code, $text, $file, $line) use ($mode, $logs) { $this->show($mode, $logs, 'Ошибка', $code, $text, $file, $line); }); set_exception_handler(function (Throwable $t) use ($mode, $logs) { $this->show($mode, $logs, 'Исключение', $t->getCode(), $t->getMessage(), $t->getFile(), $t->getLine()); }); register_shutdown_function(function () use ($mode, $logs) { $e = error_get_last(); if ($e) { $this->show($mode, $logs, 'Неперехваченная ошибка', $e['type'], $e['message'], $e['file'], $e['line']); } }); if (!in_array(strtolower($mode), ['development', 'production'])) { throw new Exception("Неправильно указан режим отладки приложения: $mode"); } if (!in_array(strtolower($logs), ['off', 'on'])) { throw new Exception("Неправильно указан режим логирования отладки приложения: $logs"); } } public function show($mode, $logs, $head, $code, $text, $file, $line) { // ob_end_clean(); if (ob_get_length()) { ob_clean(); } if ($code !== 404) { $code = 500; } http_response_code($code); call_user_func(new ErrorAction(), $mode, $logs, $head, $code, $text, $file, $line); } } Тот кто увидит закомментированный код, тот поймёт суть вопроса. Дело в том, что всё работает на 7.4.28, а с какой версии можно не прописывать ob_start()? И кстати!!! Если я убираю условие и оставляю ob_end_clean() то получаю отлуп, что буфер не включен, чтобы что-то чистить: нужно в конструктор тогда добавлять ob_start(), ПОЧЕМУ, если он уже включен по дефолту?