PHP header()不起作用

时间:2013-04-07 10:07:56

标签: php

所以最奇怪的事情发生了,老实说我很难过。 我认为我不需要发布代码示例,我会告诉你原因。

我在我的localhost上运行了一个PHP header("location:blah.php"),它运行正常。 当我将所有内容迁移到我的1and1主机帐户时,标头标签根本不起作用。这显然与来源无关。

当我把它放在我的其他主机上时,为什么它不起作用的任何想法?

2 个答案:

答案 0 :(得分:3)

尝试使用绝对URI,而不是相对的URI:

header("Location: http://yourhost.com/blah.php");

您可以参考http://php.net/manual/en/function.header.php 它说:

  

HTTP / 1.1需要绝对URI作为»Location的参数:包括方案,主机名和绝对路径,但某些客户端接受相对URI。您通常可以使用$ _SERVER ['HTTP_HOST'],$ _SERVER ['PHP_SELF']和dirname()自己创建一个相对的URI

顺便说一下,确保在header()通话之前没有发送任何输出。甚至不是空白。

答案 1 :(得分:2)

error_reporting(E_ALL);
if(!headers_sent()){
    header("location:blah.php");
    exit("Headers aren't set");
} else{
    exit("Headers already sent");
}

试试.. 如果发送标题,您将获得第二个mesasge。 如果未发送标题,则必须重定向,否则您将收到第一条消息。

如果发送它们你必须找到确切的位置..通常php错误报告告诉你。