PHP Whoops ошибка обрабатывать очистить буфер

вопрос

В процедурных сценариях содержимое обработчика PHP Whoops Pretty Page будет смешано с частичным содержимым из буфера приложений.
К сожалению, данные могут появляться в зашифрованном виде или выводиться внутри скрытого тега HTML.

Вопрос

Как очистить предыдущий буфер перед буферами обработчика Whoops?

1

Решение

Следующее решение для меня:

На самой ранней стадии вашего сценария и, возможно, только в режиме ОТЛАДКИ или РАЗРАБОТЧИКА, как я и сделал вам:

if(DEVELOPER_DEBUG === true)
ob_start();

Тогда где вы заявляете, что я сделал упс:

if(DEVELOPER_DEBUG === true)
{
$_whoops = new \Whoops\Run();

$_whoops->pushHandler(function(){
ob_clean();
});

$_handler = new \Whoops\Handler\PrettyPageHandler();
$_whoops->pushHandler($_handler);
$_whoops->register();
}

Это работало безупречно в моем случае использования в процедурных сценариях для очистки любого первоначально сгенерированного буфера до того, как Whoops начнет свой собственный вывод.

Почему это работает

ob_start () может вызываться несколько раз, буфер промывать или же Чисто Функция должна вызываться столько же раз, сколько start был вызван последовательно.

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

Контроль буфера

Например, каждый вызов ob_start создается инкрементный буфер.

Если вы вызываете ob_start 3 раза, вам нужно вызывать ob_flush 3 раза, чтобы вывести весь буферизованный контент.

Если вы вызываете его один раз, вы только очистите или очистите содержимое, сгенерированное до объявления следующего ob_start.

Может быть адаптивным для ООП.

0

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

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

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