无法修改已发送的标头信息,标头

时间:2010-07-13 05:12:00

标签: php header

  

可能重复:
  “Warning: Headers already sent” in PHP

我尝试在我的闪存驱动器中使用xampp lite portable,以便我可以将服务器带到任何地方。 但是在使用xampp时我总是遇到错误。特别是这个错误:

Warning: Cannot modify header information - headers already sent by (output started at /path/to/geeklog/public_html/blabla.php:581) in /path/to/geeklog/public_html/system/lib-blablab.php on line 180

我不知道为什么我会收到这个错误。但是当我使用wampserver时。真的没问题。而且我没有任何错误。当我使用xampp时,我需要做些什么才能解决这个问题。 是否有便携版本的wamp

4 个答案:

答案 0 :(得分:3)

是否有可能在blabla.php第581行的PHP标签之外有一点点空白?我敢打赌。

如果您在PHP标记之外有任何,请将其发送到浏览器。一旦将某些内容发送到浏览器,您就不能再发送标题(例如sessionID cookies!)。

问题可能不是XAMPP,而是您将PHP代码放在闪存驱动器上。

答案 1 :(得分:3)

要确保您的错误报告级别在不同环境中相同,您可以使用error_reporting()ini_set('display_errors', 1)

在应用程序中设置它

同时检查你的.php文件,查看开始标记之前和结束标记之后的任何空格。

除了上面提到的要点之外,确保在设置标题之前没有输出任何内容,例如以下代码会产生类似于您收到的错误:

echo 'Hello, World';
header('Location: http://www.somesite.com');

答案 2 :(得分:1)

您在环境之间看到的差异几乎肯定是配置上的差异。

服务器上发生的两件事之一是没有发出警告:

1)Output buffering默认开启

2)设置了error_reporting和/或display_errors,因此您只是没有看到警告。但如果是这种情况,你的标题仍然不会被设置,所以它可能是#1

您可以查看phpinfo()

的输出来检查这些设置

输出缓冲,启用后,缓冲任何输出(常规内容不在标签内,您回显或打印的任何内容()等)在服务器上,然后一次性将其发送到客户端。

我会在您的便携版本中找到它,找到php.ini,然后尝试打开输出缓冲。或者,您可以通过在脚本顶部附近放置ob_start()来在运行时打开输出缓冲。

答案 3 :(得分:0)

错误说明:output started at /path/to/geeklog/public_html/blabla.php:581,所以我会从那里开始。你需要在输出任何内容之前发送所有标题,这包括其他人在这里提到的空格。