0

<?php session_start(); ?> 在所有页面中都写了上面的所有内容。某些页面呈现正常,但我在其他页面中收到此错误。我已经检查并匹配了每个页面代码,并且代码很好。如果我删除<?php session_start(); ?>然后页面呈现正常,但我需要使用会话。

Cannot send session cache limiter - headers already sent (output started at /home/) in ...

需要注意的一件事是:它在我的本地服务器上运行良好。

4

5 回答 5

0

由于您包含多个文件,并且您似乎session_start()在多个文件中有一个,我敢打赌第二个文件中会引发错误。

在调用任何文件之前检查所有文件中的session_start(), 和空格。

于 2013-05-31T15:24:23.727 回答
0

这是一个非常典型的 BOM 表头问题。我怀疑您的编辑器在文件开头存储了 3 个字节的 UTF-8 BOM 标头。编辑器会隐藏它们,所以如果您不确定您的文件是否包含这些字符,您可以使用非解释性编辑器(十六进制编辑器),或者这个很棒的在线W3C 检查器

于 2013-05-31T15:25:08.040 回答
0

我敢打赌这是两件事之一:

  • 在调用session_start. PHP 必须首先发送 HTTP 标头(在消息正文之前,即页面内容之前),因此在您已经发送页面内容之后尝试发送标头将会给您该错误。

  • session_start您应该每页只调用一次。如果您在include调用后在文件中使用,请session_start确保您没有session_start在包含的文件中再次调用。这将导致“标头已发送”错误。

于 2013-05-31T15:19:31.357 回答
0

您也可以尝试使用输出缓冲(http://php.net/manual/es/function.ob-start.php)。我会首先检查您是否没有错误地发送任何输出(正如@steven 建议的那样),但是,缓冲输出可能是一个好主意。

于 2013-05-31T15:23:33.820 回答
0

您在其中一个包含的文件中有一些输出(可能是空格)。

也许您<?php不是某处文件的第一个。

于 2013-05-31T15:19:38.960 回答