PHP标题('Location:');我们公司网络上某些服务器上的问题

时间:2011-01-01 20:31:49

标签: php

我试过了:

header('Location: http://www.google.com/');
die();

它适用于Godaddy,在使用FireFox,IE和Chrome工作的网络上Ipage和Startlogic都失败了。他们使用Firefox在所有三台服务器上的公共图书馆工作。做IT的人认为这可能是思科冲突,但一直无法解决。

这是一个常见的问题我应该避免PHP 302重定向

有关如何解决此问题的任何想法。

**我在下面的评论中添加了一条评论,并且应该在这里填写 “有没有比挂起更好的术语。无论如何,只要我执行没有输出的脚本,它就会挂起。” Godaddy工作得很好,其他两个人会继续往前走,直到他们超时

2 个答案:

答案 0 :(得分:3)

那么,

你的问题并不完全正确。我的意思是,我们都期望至少有错误信息或不良行为,而不是简单的“失败”。

无论如何,我怀疑你只是得到一个空白页面,隐藏一个警告说已经发送了标题。这是PHP中的常见问题,相信我。

要启用错误,您必须配置php.ini或通过代码启用所有错误,以便检查PHP生成的任何警报。

大多数情况下,这个问题(在某些系统上发生而在其他系统上不会发生)是由UTF-8 BOM引起的,这是你在{{1}之前看不到的3个字节。在脚本开头。这通常是通过在Notepad或UTF-8编辑器中编写PHP脚本并在非UTF8环境中执行代码引起的(我认为Linux更喜欢ASCII就是这样吗?)

无论如何,您可以尝试使用本机编辑器从控制台,Wordpad或更好的Notepad ++编辑文件,并将其另存为ASCII。

如果那是问题所在,你就可以解决它。这背后的原因是PHP读取<?php并将其打印到HTTP响应,之后您不能再设置HTTP标头。就是这样。

希望得到帮助。

答案 1 :(得分:0)

您是否尝试构建正确,完整的HTTP标头?

上面的标题非常小,并且缺少状态代码 - 这应该是HTTP响应所具有的最小值。大多数客户端和代理服务器会猜测您的意思,生成正确的响应可能会有所帮助。 选择适当的3xx错误,例如

header('Status: 301 moved permanently');

可能

header('Content-type: text/html; charset=utf-8');

如果您使用的是UTF-8(有关BOM的答案是另一个可能的候选人)。