PHP标题重定向不适用于生产,空白页

PHP标题重定向不适用于生产,空白页,php,iis,iis-7,fastcgi,Php,Iis,Iis 7,Fastcgi,我正要认输。有人能帮我弄清楚吗。 在我的本地开发服务器上,这一点PHP工作得很好,它只是通过用一些变量构造url来执行重定向。所以我像预期的那样被重定向到这个页面 $status = "0"; //unsubscribed header('Location:http://www.skandium.com/manage-your-mailing-list.asp?status='.$status); die(); 在生产服务器上,我只得到一个空白页。我知道PHP页面本身正在工作,因为在这行之前发

我正要认输。有人能帮我弄清楚吗。 在我的本地开发服务器上,这一点PHP工作得很好,它只是通过用一些变量构造url来执行重定向。所以我像预期的那样被重定向到这个页面

$status = "0"; //unsubscribed
header('Location:http://www.skandium.com/manage-your-mailing-list.asp?status='.$status);
die();
在生产服务器上,我只得到一个空白页。我知道PHP页面本身正在工作,因为在这行之前发生的所有其他事情都可以正常工作。我可以用一个简单的
echo
替换这一行,并且可以看到URL也是正确的

其他详细信息:

  • 托管在windows机箱上(dev也是windows)
  • 通过FASTCGI运行相同的PHP版本
编辑:绘图变厚

在新页面中,以下代码本身在生产环境中运行良好。仍然没有解释为什么上面的代码在本地工作而不是在生产环境中工作。我似乎排除的是header重定向语句本身并不是罪魁祸首

<?php 

//test.php

//prevent page caching
header("Cache-Control: no-cache"); 
header("Expires: -1");

$status = "0"; //unsubscribed

header('Location:http://www.abc.com/manage-your-mailing-list.php?status='.$status);
die();

?>


文件是UTF-8编码的吗?任何输出都可能阻止执行代码,包括BOM。可能编码没有明确设置,但您的开发计算机采用UTF-8(并忽略了标记),而您的生产服务器没有。文件是否已编码UTF-8?任何输出都可能阻止执行代码,包括BOM。可能编码没有显式设置,但是您的开发机器采用UTF-8(并忽略了标记),而您的生产服务器没有。请确保php标记前面没有空格,请确保php标记前面没有空格

header('Location: http://www.abc.com/manage-your-mailing-list.php?status='.$status)
我只是在冒号(:)和url之间添加了一个空格。。 我不知道这发生在其他人身上,但有时这种事情发生在我身上,有时出于任何原因都会发生

另外,您是否尝试过相对路径? 或者在其他页面,我的意思是“标题位置”在其他地方有效吗? 或者它只发生在这个脚本上?

试试这个

header('Location: http://www.abc.com/manage-your-mailing-list.php?status='.$status)
我只是在冒号(:)和url之间添加了一个空格。。 我不知道这发生在其他人身上,但有时这种事情发生在我身上,有时出于任何原因都会发生

另外,您是否尝试过相对路径? 或者在其他页面,我的意思是“标题位置”在其他地方有效吗?
或者它只发生在这个脚本上?

您可以尝试以下几点:

  • 在发送重定向标头之前,检查
    标头\u sent()
    是否为
    true
  • 设置
    error\u reporting(E\u ALL)
    ini\u Set('display\u errors',1)
  • 使用firebug检查发送到浏览器的标题(如果有)

    • 您可以尝试以下几点:

      • 在发送重定向标头之前,检查
        标头\u sent()
        是否为
        true
      • 设置
        error\u reporting(E\u ALL)
        ini\u Set('display\u errors',1)
      • 使用firebug检查发送到浏览器的标题(如果有)
        • 这些都不起作用

          我最后回应了一个
          meta
          重定向

          我还可以回显javascript
          位置。替换
          这些都不起作用

          我最后回应了一个
          meta
          重定向


          我还可以回显javascript
          位置。替换

          是否尝试将重定向更改为完整的http路径而不是相对路径页面名称?是否可以访问错误日志?他们提到了什么?在页面的开头尝试在php标记中添加“ob_start();”。希望这能解决您的问题。@Arjan我应该查看哪些日志文件?@balanv'ob_start();'导致页面根本不加载,浏览器加载指示器一直在运行…您是否尝试将重定向更改为完整http路径而不是相对路径页面名称?您是否可以访问错误日志?他们提到了什么?在页面的开头尝试在php标记中添加“ob_start();”。希望这能解决您的问题。@Arjan我应该查看哪些日志文件?@balanv'ob_start();'导致页面根本不加载,浏览器加载指示器一直在运行……如何验证这一点?我正在使用记事本+,在“编码”菜单选项下,我看到选中了“ANSI编码”。还有其他选项,如“UTF-8无BOM”等。UTF-8本身没有BOM。我不知道如何在记事本++中将编码更改为UTF-8;您应该参考应用程序的文档。(此外,还应更改包含的编码)。好的,我已将页面和任何包含保存为UTF-8,但其行为仍然相同。如何验证这一点?我正在使用记事本+,在“编码”菜单选项下,我看到选中了“ANSI编码”。还有其他选项,如“UTF-8无BOM”等。UTF-8本身没有BOM。我不知道如何在记事本++中将编码更改为UTF-8;您应该参考应用程序的文档。(另外,includes的编码也应该更改)。好的,我将页面和任何includes保存为UTF-8,它的行为仍然相同。