PHP 哎呀错误处理清除缓冲区
PHP Whoops error handle clear buffer
问题
在过程脚本中,PHP Whoops Pretty Page 处理程序内容将与来自应用程序缓冲区输出的部分内容混合。
哎呀可能会出现乱码或在隐藏的 html 标签内输出。
问题
如何清除 Whoops 处理程序缓冲区之前的先前缓冲区?
我的以下解决方案工作者:
At the earliest point of your script and perhaps only in a DEBUG or DEVELOPER mode as I did you need to do:
if(DEVELOPER_DEBUG === true)
ob_start();
然后你在哪里声明 Whoops I did:
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。
问题
在过程脚本中,PHP Whoops Pretty Page 处理程序内容将与来自应用程序缓冲区输出的部分内容混合。 哎呀可能会出现乱码或在隐藏的 html 标签内输出。
问题
如何清除 Whoops 处理程序缓冲区之前的先前缓冲区?
我的以下解决方案工作者:
At the earliest point of your script and perhaps only in a DEBUG or DEVELOPER mode as I did you need to do:
if(DEVELOPER_DEBUG === true)
ob_start();
然后你在哪里声明 Whoops I did:
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。