即使我有输出,也可以发送标题


Can send header even though I have output

下面不应该给出错误消息吗?它将我发送到domain.com/asdad/,而不是给我一条错误消息。

<?php
echo 'asdadasdasd';
if ($_SERVER['REQUEST_URI'] == '/newtest.php') {
    header("Location: /asdad/");
    exit;
}
?>

我直接查看,在此之前或之后没有其他文件或代码。header不应该给我一个错误,而不是把我发送到新页面,因为我在header之前已经输出了吗?

检查您的phpinfo(),您可能已打开output_buffering

PHP输出与大多数IO一样,通常被放入临时缓冲区,直到达到临界量(或用户调用flush),此时内容被刷新到浏览器。如果你设法在输出缓冲区被刷新之前发送一个header,你就可以逃脱惩罚

然而,这并不是您所依赖的,因为缓冲区大小(或者说缓冲区大小)在不同的安装之间可能会有所不同。

相关文章: