下面不应该给出错误消息吗?它将我发送到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
,你就可以逃脱惩罚
然而,这并不是您所依赖的,因为缓冲区大小(或者说缓冲区大小)在不同的安装之间可能会有所不同。