PHP header() 不起作用

Posted

技术标签:

【中文标题】PHP header() 不起作用【英文标题】:PHP header() does not work 【发布时间】:2011-11-03 00:02:22 【问题描述】:

有人知道为什么我的 header() 没有重定向吗?

我的脚本的最后一部分是:

  header("location: test.php");
  die('died');

它写道:

died.

:(((

它应该在它死之前必须重定向,但它没有。

你有什么想法吗?

【问题讨论】:

我该怎么做?只需点击反馈是或否? 在 PHP 中开启 error_reporting、error_level 等。您很可能会收到“无法发送标头 - 输出已在第 XXX 行开始”错误。 @mario 这不是投票的目的。既然你喜欢链接到常见问题,这里也给你一个...Downvoting should be reserved for extreme cases. It's not meant as a substitute for communication and editing.哦,我会删除我的答案,这实际上帮助他解决了他的问题,但违反了标准。 @mario 然后为海报发表评论以扩展更多内容......我们不是在这里让初学者对发布问题感到不舒服。您认为每个人都天生就知道“标头已发送”问题吗?如果有不清楚的地方,请询问更多细节,让他们参与进来,不要只是开始投反对票。 @mario 让我们continue this discussion in chat 【参考方案1】:

可能是您在向浏览器输出一些文本/html 之后调用了 header(),这是一个禁忌。如果在调用之前发送了一个空格的输出,您的 header() 调用将被忽略。

换句话说,您的 header() 代码需要位于脚本的开头,然后才能向用户显示 anything。如果这仍然不起作用,请确保您的 php 标签之外没有任何空格或其他空格。

【讨论】:

【参考方案2】:

可能在header 之前有一些不可见的输出,这会阻止设置header,并且会抑制信息警告。

另外,Location-Headers 应该包含一个绝对 URL:

// Show Errors
error_reporting(E_ALL);
ini_set('display_errors','On');
// Redirect
header('Location: http://example.com/path/test.php');
die('redirect');

【讨论】:

【参考方案3】:

您应该为您的位置标头使用完全限定的地址,并且输出任何内容:

header('Location: http://example.com/test.php');
die();

另外确保在设置header之前没有发送其他内容,否则不会发送,因为headers已经发送到浏览器了。

【讨论】:

【参考方案4】:

location: 应该是Location:

此外...

滚动到本页顶部。 点击您的帐户名。 点击随机问题 勾选随机答案 回来寻找更多严肃的答案

祝你好运。

【讨论】:

亲爱的 MattK,当您长时间编写代码并创建了很长时间的代码,并且您的代码在演示之前和偏离课程之前,错误报告已关闭,并且 f.. 标头不会通过 f... 回显空字符串进行重定向... 在这种情况下您会做什么?【参考方案5】:

只需删除 php 标记之前的所有内容即可解决。

去掉php标签前的空格

选择标记前的所有内容,然后按擦除按钮。

【讨论】:

【参考方案6】:

我也遇到了这个错误,并尝试使用 error_reporting(E_ALL) 显示错误, 但这对我不起作用。信息:我在 Strato 上使用托管服务。

Floem 回答了所有这些问题的解决方案,感谢您的出色设置。

如果您输入error_reporting(E_ALL) 一次后没有出现错误, -> 您必须额外添加 ini_set('display_errors', 'On'),以强制 PHP 显示您的所有错误。这解决了我的错误问题

然后就可以读出为什么 PHP 不会进行重定向。 我这边的一个提示:我建议你构建一个小的重定向类,如本视频所示:Redirect Class for easy use,如果你打算比平时更多地使用这个重定向。

【讨论】:

【参考方案7】:

如果在 HTML 文件中直接/间接需要包含 'header()' 指令的文件,则指令 include 'someFile' 应该是该 HTML 文件的第一行。将此指令放在 HTML 文件的顶部,如 this image.

所示

【讨论】:

【参考方案8】:

添加

ob_start();

之前

header("location: test.php");

【讨论】:

以上是关于PHP header() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PHP Header Location 在 localhost xampp 中不起作用?

字符集 UTF-8 和 php header() 不起作用

基于 header(location) 命令重定向 php 页面不起作用;标头已发送错误[重复]

如果 REQUIRE_ONCE 存在,HEADER 命令不起作用[重复]

标头位置在 PHP 中不起作用 [重复]

PHP标头404不起作用