session_start()[function.session-start]的问题:

时间:2011-09-15 14:09:46

标签: php

这里是错误代码:

Cannot send session cookie - headers already sent by (output started at
C:\xampp\htdocs\log\New folder (4)\New folder (2)\iskono\forum.php:5) in 
C:\xampp\htdocs\log\New folder (4)\New folder (2)\iskono\forum.php on line 244

Warning: session_start() [function.session-start]: Cannot send session cache limiter - 
headers already sent (output started at C:\xampp\htdocs\log\New folder (4)\New folder 
(2)\iskono\forum.php:5) in C:\xampp\htdocs\log\New folder (4)\New folder 
(2)\iskono\forum.php on line 244 

第244行是需求代码

<? require("forum/index.php"); ?>

如何解决这个错误?

6 个答案:

答案 0 :(得分:4)

您需要在发送任何输出(例如HTML)之前进行session_start调用。所以把它放在你的doctype声明之上,并确保之前没有空格。例如:

<?php
    session_start();
?>
<!DOCTYPE html>
<html>
...

答案 1 :(得分:3)

您在调用session_start()之前显然已经发送了一些数据,这必须在第一时间调用!

从右

<?php
session_start();
echo "hi man :) "; // this is right

<强>错误

<?php
echo "hi man :( ";  //this is wrong
session_start();

答案 2 :(得分:1)

您已完成以下任一操作:

  • 调用echoprint或其他导致第5行输出的功能。]
  • includerequire d已导致输出发送的文件。检查所有包含的文件,查看<?php ?>标记之前/之后的前导/尾随空格。
  • 完成其他导致错误消息写入第5行输出的内容。

第5行是什么?

答案 3 :(得分:1)

确保在会话开始之前没有向浏览器发送任何字符。

看起来你在forum.php的第5行发送了一些东西。

可能是由echoprint引起的,或者是因为您直接从脚本发送文字:

<?php
  some code....
?>
text sent to the browser
<?php
  more code.
  session_start();
?>

通过将session_start();放在脚本的开头,确保会话提前启动。

许多其他人在会话方面遇到过类似的问题。请查看有关http://php.net/manual/en/function.session-start.php session_start()的PHP手册,了解会话问题,解决方案和提示。

答案 4 :(得分:1)

由于还没有其他人提及它:如果您使用UTF编码文件(不输出文件,文件本身),请确保没有字节顺序标记(没有BOM的UTF-8。

在文件开头添加BOM可能会导致此错误,因为它会计为输出。

此外,您可以使用输出缓冲来解决与“已发送标头”错误相关的任何其他问题。这会导致发送 no 输出,直到您使用ob_flush()ob_end_flush()明确说出“发送输出”。

答案 5 :(得分:1)

在php中,可以在发送任何其他输出之前发送标头。如果您在标头之前发送了任何输出,则标题将生成错误。 (甚至是之前的空间