问题
在过程脚本中,PHP Whoops Pretty Page处理程序内容将与应用程序缓冲区输出中的部分内容混合在一起。 哎呀可以在隐藏的html标签中出现乱码或输出。
问题
如何在Whoops处理程序缓冲区之前清除前一个缓冲区?
答案 0 :(得分:0)
以下解决方案工作人员:
在脚本的最早阶段,也许只有在DEBUG或DEVELOPER模式下,你需要这样做:
if(DEVELOPER_DEBUG === true)
ob_start();
然后你宣布我做过的Whoops:
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()可以被多次调用,缓冲区 flush 或 clear 函数需要调用与start依次调用相同的次数。
通过让你的应用程序启动它自己的缓冲区,它使它成为一个可以被清除的资源,Whoops总是启动它自己的缓冲区,所以通过注册一个处理程序来清除第一个缓冲区(你的应用程序)然后发生错误时,Whoops可以清除之前的缓冲区。
缓冲区控制
例如,每次调用 ob_start 增量缓冲区都会被创建。
如果你调用ob_start 3次,你需要调用ob_flush 3次才能输出所有缓冲的内容。
如果您调用它一次,您将只清除或刷新在宣布下一个ob_start之前生成的内容。
可以适应OOP。