此问题已在此处有答案:
How to fix "Headers already sent" error in PHP(16个回答)
10年前关闭。
这是我的档案我想让它重定向,但什么也没发生。为了检查发生了什么,我在header部分之前添加了一个echo。
它既不会抛出错误,也不会重定向到index.php。怎么了?我已经打开/关闭了输出缓冲,但没有什么使它重定向。我该怎么办?
<?
error_reporting(E_ALL);
echo 'This is an error';
header("Location: login.php");
die();
?>
4条答案
按热度按时间dgtucam11#
PHP documentation:
header()
必须在发送任何实际输出之前被调用,无论是通过普通的HTML标记,文件中的空白行,还是从PHP发送。在本例中,您在
header()
之前使用echo
6qftjkof2#
我提醒自己,我已经在实际的测试环境中安装了xtek,在谷歌上搜索它之后,我发现了这个网站:http://bugs.xdebug.org/view.php?id=532
因此,我将下载最新版本的xmix,并相应地为新文件更改php.ini,一切都很顺利。正在发送标题-重定向完成并显示错误。
感谢大家的帮助!
gg0vcinb3#
您是否启用了短标签?使用长标签
<?php
试试:pu3pd22g4#
是否启用了display_errors?
@Gumbo -它肯定是!
当然不是。因为
为了检查发生了什么,我在header部分之前添加了一个echo。
如果你启用了display_errors,它会显示一个错误,至少当你
turned output buffering on
的时候。首先,确保您可以看到错误消息。
只是打印出一个未定义变量,
我相信你不会看到它。因此,您必须打开显示错误
接下来,在服务器端,您可以使用
headers_sent()
函数来查看是否发送了头。在客户端使用HTTP嗅探器来查看是否发送了任何内容检查您的BOM文件。