我已将<?php session_start(); ?>
写在所有页面的所有内容之上。 有些网页呈现正常,但我在其他网页上收到此错误。我检查并匹配了每个网页代码,代码也没问题。如果我删除<?php session_start(); ?>
,那么页面呈现正常,但我需要使用会话。
Cannot send session cache limiter - headers already sent (output started at /home/) in ...
需要注意的一点是:它在我的本地服务器上运行良好。
答案 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。