4

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

通常...

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

return $output;

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

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

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

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

4

1 回答 1

1

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

于 2014-11-25T12:17:23.733 回答