PHP 输出缓冲区出现白屏并且方法返回时没有错误

标签 php output-buffering ob-get-contents

我已经使用 PHP 很长时间了,由于某种原因迁移到新服务器导致了白屏死机。显然这一定是因为版本差异。多年来我一直在使用相同的输出缓冲区模式。

通常...

ob_start();
?>
    //HTML...
<?php
$output = ob_get_clean();
ob_flush();

return $output;

最近我在返回 HTML 部分并在 View 之间传递它们时(我使用 MVC)在我的正常/更新版本的 PHP(我认为在我的 WAMP 上 5.4+)中发现了一些问题。它们完全显示在屏幕上,根本没有保存在缓冲区中。我发现我的 ob_start() 中需要一个必要的标志来让它知道可以删除缓冲区。

像这样 ob_start(null, 0, PHP_OUTPUT_HANDLER_REMOVABLE);

但是现在我的页面是实时的,而不是在 WAMP 上,整个页面现在中断并显示全白屏。我已打开所有错误报告,但仍然没有。日志中什么也没有出现,等等。所以我做了一系列的 echo "test"; die; 以查看它在哪一行中断,当我删除在 View 之间传递已完成 HTML block 的缓冲部分时,果然一切都很好。

我需要弄清楚如何正确地返回我的部分。

最佳答案

在这种情况下您不需要 ob_flush(),因为 ob_get_clean() 已经关闭了输出缓冲区。

关于PHP 输出缓冲区出现白屏并且方法返回时没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27117414/

相关文章:

PHPUnit 给我 autoload.php not found 异常

php - 如何判断该函数是否是从输出缓冲回调中调用的?

php - 输出缓冲用例作为 "headers already sent"的正确解决方案

php - 如何从mysql记录中返回php代码?

php - 使用 PHP ob_start 和 ob_get_clean 输出流

php - 如何在 php 7 中连接到 mongodb 数据库

php - postgreSQL 到 googlecharts

php - 嵌套文档作为对象而不是数组插入

c# - SerialPort 写缓冲区的用途是什么?