我已经使用 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/