PHP头位置重定向不起作用-为什么?[副本]

5vf7fwbs  于 2023-10-15  发布在  PHP
关注(0)|答案(4)|浏览(84)

此问题已在此处有答案

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();
?>
dgtucam1

dgtucam11#

PHP documentation
header()必须在发送任何实际输出之前被调用,无论是通过普通的HTML标记,文件中的空白行,还是从PHP发送。
在本例中,您在header()之前使用echo

6qftjkof

6qftjkof2#

我提醒自己,我已经在实际的测试环境中安装了xtek,在谷歌上搜索它之后,我发现了这个网站:http://bugs.xdebug.org/view.php?id=532
因此,我将下载最新版本的xmix,并相应地为新文件更改php.ini,一切都很顺利。正在发送标题-重定向完成并显示错误。
感谢大家的帮助!

gg0vcinb

gg0vcinb3#

您是否启用了短标签?使用长标签<?php试试:

<?php
error_reporting(E_ALL);
header("Location: login.php");
die();
?>
pu3pd22g

pu3pd22g4#

是否启用了display_errors?
@Gumbo -它肯定是!
当然不是。因为
为了检查发生了什么,我在header部分之前添加了一个echo。
如果你启用了display_errors,它会显示一个错误,至少当你turned output buffering on的时候。
首先,确保您可以看到错误消息。
只是打印出一个未定义变量,

error_reporting(E_ALL);
echo $undef9306;

我相信你不会看到它。因此,您必须打开显示错误
接下来,在服务器端,您可以使用headers_sent()函数来查看是否发送了头。在客户端使用HTTP嗅探器来查看是否发送了任何内容
检查您的BOM文件。

相关问题