问题
在程序脚本中,PHP Whoops Pretty Page 处理程序内容将与来自应用程序缓冲区输出的部分内容混合。哎呀可以在隐藏的 html 标记内显示为乱码或输出。
问题
如何在 Whoops 处理程序缓冲区之前清除先前的缓冲区?
问题
在程序脚本中,PHP Whoops Pretty Page 处理程序内容将与来自应用程序缓冲区输出的部分内容混合。哎呀可以在隐藏的 html 标记内显示为乱码或输出。
问题
如何在 Whoops 处理程序缓冲区之前清除先前的缓冲区?
我的以下解决方案工作者:
在您的脚本的最早点,也许只有在调试或开发模式下,您需要这样做:
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 的次数相同。
通过让您的应用程序启动它自己的缓冲区,它使其成为可以清除的资源,Whoops 也总是启动它自己的缓冲区,因此通过注册一个处理程序来清除第一个缓冲区(您的应用程序)然后在发生错误时,Whoops可以清除以前的缓冲区。
缓冲控制
例如,每次调用ob_start都会创建一个增量缓冲区。
如果调用 ob_start 3 次,则需要调用 ob_flush 3 次才能输出所有缓冲的内容。
如果您调用它一次,您只会清除或刷新在声明下一个 ob_start 之前生成的内容。
可以适应 OOP。