在使用輸出緩衝時,似乎一個包含的文件在輸出緩衝區關閉之前調用 die() 將被刷新而不是清除。也就是說,默認情況下會調用 ob_end_flush()。
<?php
// a.php(此文件不應該顯示任何內容)
ob_start();
include('b.php');
ob_end_clean();
?>
<?php
// b.php
print "b";
die();
?>
這最終會打印 "b" 而不是什麼都沒有,因為調用了 ob_end_flush() 而不是 ob_end_clean()。也就是說,die() 會刷新緩衝區而不是清除它。我花了一段時間才確定是什麼導致了刷新,所以我想分享一下。