【问题标题】:session_start() throwing errorsession_start() 抛出错误
【发布时间】:2013-03-07 19:56:34
【问题描述】:

我目前在使用 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 个文件中只有两个会发生这种情况?

【问题讨论】:

标签: php session


【解决方案1】:

在您的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() 之前可能会回显数据的内容。

【讨论】:

  • session_start 是使用包含的每个文件的第一行
  • 不,当我查看您的源代码时,我发现<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head></head><body id="page1"><br>在错误消息之前...
  • 我没有,太糟糕了,我得到了以下内容

  • 警告:session_start() [function.session-start]:无法发送会话缓存限制器 - 在线 /home/paramireze/madisonh3.com/includes/common.php 中已发送标头(输出开始于 /home/paramireze/madisonh3.com/calendar.php:1) 5
    ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> w3.org/1999/xhtml" xml:lang ="en" lang="en">
  • 这里没有魔法。即使是包含之前的空格或换行符也可能导致这种情况发生。在 session_start() 之前有一个由您的脚本生成的输出,并且由于包含相同文件的其他脚本似乎可以工作,您应该查看 calendar.php 文件。
【解决方案2】:

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

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

检查您的 URL 显示,确实存在这样的 BOM 标头。查看编辑器 (IDE) 的设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 2014-08-06
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    相关资源
    最近更新 更多