我一直在使用PHP很长一段时间,由于某些原因,迁移到新服务器导致死亡白屏。显然它必须是因为版本差异。多年来我一直使用相同的输出缓冲模式。
...通常
ob_start();
?>
//HTML...
<?php
$output = ob_get_clean();
ob_flush();
return $output;
最近我发现了我的普通/新版PHP(我认为在我的WAMP中为5.4+)的一些问题,同时返回HTML部分并在视图之间传递它们(我使用MVC)。它们完全显示在屏幕上,根本没有保存在缓冲区中。我发现我在ob_start()
中需要一个必要的标志,让它知道可以删除缓冲区。
像ob_start(null, 0, PHP_OUTPUT_HANDLER_REMOVABLE);
然而现在我的页面已经存在而不是在WAMP上,整个页面现在断开并显示完整的白色屏幕。我打开了所有错误报告但仍然没有。没有任何东西出现在日志中等等所以我已经做了一大堆echo "test"; die;
以查看它正在破坏的行,当我删除在视图之间传递完成的HTML块的缓冲部分时,一切都很好。 / p>
我需要弄清楚如何正确地返回我的部分。
答案 0 :(得分:1)
在这种情况下你不需要ob_flush(),因为ob_get_clean()已经关闭了输出缓冲区。