gpt4 book ai didi

php - 发生错误时 ob_start 被中断

转载 作者:可可西里 更新时间:2023-11-01 00:22:01 24 4
gpt4 key购买 nike

所以 ob_start() 应该捕获输出,直到另一个缓冲区函数被调用,如 ob_get_clean(), ob_get_contents(), ob_get_flush()

但是当缓冲区读取器中抛出异常时,它将通过停止读取器并回显输出而不是继续捕获它来影响读取器。这就是我要防止的。

假设这是我的脚本:

<?php
error_reporting(0);
try {
ob_start();
echo "I don't wanna output this what so ever, so want to cache it in a variable with using ob_ functions";
$unlink = unlink('some file that does not exist');
if(!$unlink) throw new Exception('Something really bad happen.', E_ERROR); //throwing this exception will effect the buffer
$output = ob_get_clean();
} catch(Exception $e) {
echo "<br />Some error occured: " . $e->getMessage();
//print_r($e);
}
?>

此脚本将输出:

I don't wanna output this what so ever, so want to cache it in a variable with using ob_ functions
Some error occurred: Something really bad happen.

什么时候应该打印

Some error occurred: Something really bad happen.

我做错了什么,有解决办法吗?

最佳答案

我的猜测是,即使在您的 catch block 中,输出缓冲仍然处于事件状态。但是,脚本以事件输出缓冲结束,因此 PHP 会自动显示输​​出缓冲区。

因此您可以尝试在异常处理程序中调用 ob_clean()

关于php - 发生错误时 ob_start 被中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com