2010-07-13 57 views
0

可能重复:
“Warning: Headers already sent” in PHP不能更改头信息,头已经发出已

我试着用XAMPP精简版在我的闪存驱动器的便携式这样我就可以把服务器的任何地方。 但是当我使用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时,我需要做些什么来解决这个问题。 是否有便携式版本的wap

+1

修改标题和标签,因为它与XAMPP无关,严格来说是一个PHP问题。 – animuson 2010-07-13 05:18:34

回答

3

为了确保您的错误报告级别是一样的不同环境中,你可以使用error_reporting()ini_set('display_errors', 1)

还要检查你的PHP文件的开始标记之前和结束标记后的任何空白在您的应用程序设置。

除了上述各点,确保所设置的标头之前不输出任何东西,例如下面的代码将产生类似于您收到的错误:

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

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

查看,如果您有任何东西以外的PHP标记,即发送到浏览器。一旦有东西被发送到浏览器,你就不能再发送头文件了(比如sessionID cookies!)。

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

1

你在环境中看到的差异几乎肯定是配置上的差异。

一两件事情正在发生未警告冒落的服务器上:

1)Output buffering默认是开启的

2)error_reporting和/或被设置成你只是不看到警告。但是,如果是这样的话,你的头仍不会被置,因此它可能是#1

您可以通过查看从phpinfo()

输出缓冲,使当输出检查这些设置,缓冲的任何输出(常规内容不在标签内,任何回显或打印()等)在服务器上,然后一次性发送到客户端。

我会在你的便携版本中寻找,找到php.ini,并尝试打开输出缓冲。或者,您可以通过在脚本顶部附近附加ob_start()来在运行时启用输出缓冲。

0

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

相关问题