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 中不起作用?
基于 header(location) 命令重定向 php 页面不起作用;标头已发送错误[重复]