某些页面中的PHP会话错误

时间:2013-05-31 15:15:04

标签: php session

我已将<?php session_start(); ?>写在所​​有页面的所有内容之上。 有些网页呈现正常,但我在其他网页上收到此错误。我检查并匹配了每个网页代码,代码也没问题。如果我删除<?php session_start(); ?>,那么页面呈现正常,但我需要使用会话。

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

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

5 个答案:

答案 0 :(得分:0)

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

  • 在致电session_start之前,请确保文件中没有输出,包括换行符。 PHP必须首先发送HTTP标头(在邮件正文之前,即页面内容),因此在您已经发送页面内容后尝试发送标题会给您带来错误。

  • 每页只能调用session_start一次。如果您在致电include后在文件中使用session_start,请确保您未在​​附带的文件中再次呼叫session_start。这会导致“已发送标头”错误。

答案 1 :(得分:0)

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

也许你的<?php不是你文件中的第一个。

答案 2 :(得分:0)

您也可以尝试使用输出缓冲(http://php.net/manual/es/function.ob-start.php)。我首先检查一下你是否错误地发送了任何输出(正如@steven所建议的那样),但是,你仍然可能想要缓冲输出。

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

这是一个非常典型的BOM头问题。我怀疑你的编辑器在文件的开头存储了一个带有3个字节的UTF-8 BOM头。编辑器将隐藏它们,因此如果您不确定您的文件是否包含这些字符,您可以使用非解释编辑器(十六进制编辑器),也可以使用这个精彩的在线W3C checker