php ob start报错,php – ob_start在发生错误时被中断

该博客探讨了PHP中使用ob_start()进行输出缓冲时遇到的问题。当内部异常触发时,它会中断缓冲过程并导致未预期的输出。作者展示了如何在尝试捕获输出并将其存储到变量中时,一个未找到文件的异常如何导致输出被打印而不是被捕获。他们寻求解决方案以确保即使在异常情况下,输出也能正确地被缓存而不被回显。
摘要由CSDN通过智能技术生成

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

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

让我们说这是我的脚本:

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 "
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.

我做错了什么,有解决方案吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值