【问题标题】:php session_start() errorphp session_start() 错误
【发布时间】:2010-05-05 00:04:20
【问题描述】:

我使用了在网上找到的示例并将其应用于我的代码:

<?php
session_start();
if (isset($_REQUEST["email"]))
{
    $_SESSION["name"] = true;
    $host = $_SERVER["HTTP_HOST"];
    $path = dirname($_SERVER["PHP_SELF"]);
    $sid = session_name() . "=" . session_id();
    header("Location: index.php?$sid");
    exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
...
and rest of the html code

当我打开这个页面时,我得到一个错误:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /data/server/user/directory/sub-directory/login.php:1) in /data/server/user/directory/sub-directory/login.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/server/user/directory/sub-directory/login.php:1) in /data/server/user/directory/sub-directory/login.php on line 2

我环顾四周以解决这个问题,并且在这个网站上也看到了一些关于这个的帖子,但我就是无法很好地掌握这个......找不到答案。

请帮忙。

谢谢。

【问题讨论】:

  • 这应该是 SO 上被问到最多的问题
  • 你刚刚让我拍了两遍。
  • 您在互联网上找到的粘贴代码就像您在街上发现的口香糖。 :)
  • 首先,我已经说过我在这个网站上寻找过这种错误,但找不到答案……不知道 BOM 是什么意思。这就是我发帖的原因,希望有人能指引我走向正确的方向……而 Grossvogel 和 ZZ coder 做到了。你的 cmets 关于这篇文章是重复的或者告诉我关于口香糖的事情不会有帮助。在某一时刻,你们所有人都做了同样的事情......复制/粘贴并学习了自己的方式。我现在正处于那个阶段。很抱歉,无论出于何种原因,这让你们中的一些人感到困扰。并感谢那些非常乐于助人的人。

标签: php mysql


【解决方案1】:

众所周知,记事本会在文本文件的开头插入 BOM。保存文件时,请确保您没有选择 Unicode 或 UTF-8 作为编码。

您可以通过对文件进行十六进制转储来确认是否插入了 BOM。您可以使用此实用程序来做到这一点,

http://www.richpasco.org/utilities/hexdump.html

如果它不以 0x3C 开头,则您有 BOM。

【讨论】:

  • 这些年来,我从未注意到这种编码选择。我刚刚发现并将其保存为 ANSI,我不再收到此警告。感谢您帮助这个新手。
【解决方案2】:

检查&lt;?php 之前的空格、换行符或任何其他字符,session_start() 之前的任何输出都会导致该错误。

错误明确指出输出在 login.php 的第 1 行,而 session_start() 在第 2 行。因此它可能是空格或其他字符。

【讨论】:

  • 我做到了。该 php 脚本是此 html 文件中的唯一脚本。我什至尝试去掉“$_SESSION”、“$host”、“$path”、“$sid”、“header”和“exit;”前面的那些多余空格……但它仍然没有工作。
  • 另外,
  • 而且,如果您仍然找不到补救措施,您可以查看是否可能是 Unicode BOM 问题。检查您的文本编辑器使用的编码设置,如果可能,选择没有 BOM 的编码。这是对此问题和其他问题的简短说明:bytes.com/topic/php/insights/…
  • 我正在使用一个名为记事本的简单文本编辑器。我如何检查这个编码设置...或者记事本中有这样的设置可用性吗?
猜你喜欢
  • 2014-08-06
  • 2011-08-25
  • 2013-05-10
  • 2011-07-03
  • 2013-10-28
  • 2021-08-01
  • 1970-01-01
  • 2017-07-31
  • 1970-01-01
相关资源
最近更新 更多