session_start()抛出错误

时间:2013-03-07 19:56:34

标签: php session

我目前使用php收到以下错误:

Warning: session_start() [function.session-start]: 
Cannot send session cache limiter - headers already sent 
(output started at /home/paramireze/madisonh3.com/calendar.php:1)
in /home/paramireze/madisonh3.com/includes/common.php on line 5

每个文件的第一行是include common.phpcommon.php中的第一行代码是'if(!isset($ _ SESSION)){session_start();}`。

此错误仅发生在calendar.phpnews.php上(如果您访问http://www.madisonh3.com/calendar.php,则可以看到错误)。我的所有文件都相同,包括common.php。之后,我将编写html标记并从那里包含标题。

我已经阅读了有关session_start的其他讨论,所有人都说要确保在session_start之前不输出任何html。另外,如果我做错了什么,为什么它只发生在我的10个文件中的两个?

2 个答案:

答案 0 :(得分:2)

session_start()命令之前输出数据。由于会话cookie设置为HTTP标头,因此必须在任何HTML输出之前。

错误Cannot send session cookie - headers already sent by (output started at /home/paramireze/madisonh3.com/calendar.php:1) in /home/paramireze/madisonh3.com/includes/common.php on line 5表示之前输出的内容。

请查看您的代码,找到可能在session_start()之前回显数据的内容。

答案 1 :(得分:0)

您应该注意您的编辑器不存储 utf-8物料清单标题,此标题有时会以3个字节存储在文件的开头。

编辑器会隐藏它们,所以如果您不确定您的文件是否包含这些字符,您可以使用非解释编辑器(十六进制编辑器),也可以使用这个精彩的在线W3C checker。 BOM标头被PHP视为输出,这可能会导致令人讨厌的Cannot modify header information - headers already sent错误。

检查您的网址显示,确实存在此类BOM表头。查看编辑器(IDE)的设置。