警告:session_start()[function.session-start]:无法发送会话缓存限制器

时间:2011-09-10 18:49:27

标签: php session

我在这里遇到了Session_start()的问题:

警告:session_start()[function.session-start]:无法发送会话缓存限制器 - 已发送的标头(输出始于C:\ xampp \ htdocs \ pages \ home.php:4 )在 C:\ xampp \ htdocs \ charts \ home-chart.php 2

在第2行的home-chart.php中,我写了这样的代码:

session_start();
.
.
.
echo ' username: '.$_SESSION['user_name'];

虽然有了这个警告我可以得到$_SESSION['user_name']的结果但是当我试图清除这部分代码时:

session_start();

我在屏幕上看不到任何结果。 那么,你的解决方案是什么?

<?php
@session_start();
require_once '../class/chart.class.php';
$chart = new chart();
?>
<html>
    <head>
        <link href='../css/home-chart.css'  rel='stylesheet' type='text/css' />
    </head>
    <body>
        <div class='float_left' style="margin-bottom:20px;">
            <div class='float_left' style='line-height: 9.41px; font-size: x-small;'>0<br /></div>      <div class='float_left' style="background-image: url('../image/web/chart.png'); width: 367px; height: 226px; " >
                <!-- 1 --><div class='float_left float_left column' style='margin-left:2px;'>
                    <?php echo $chart->mysql_fetch($chart->daycal(-3)); ?>
                </div>  
                <!-- 2 --><div class='float_left float_left column'>
                    <?php echo $chart->mysql_fetch($chart->daycal(-2)); ?>
                </div>  
                <!-- 3 --><div class='float_left column' >
                    <?php echo $chart->mysql_fetch($chart->daycal(-1)); ?>
                </div>  
                <!-- 4 --><div class='float_left column' >
                    <?php echo $chart->mysql_fetch($chart->daycal(0)); ?>
                </div>  
                <!-- 5 --><div class='float_left column' >
                    <?php echo $chart->mysql_fetch($chart->daycal(1)); ?>
                </div>  
                <!-- 6 --><div class='float_left column' >
                    <?php echo $chart->mysql_fetch($chart->daycal(2)); ?>
                </div>  
                <!-- 7 --><div class='float_left column' >
                    <?php echo $chart->mysql_fetch($chart->daycal(3)); ?>
                </div>  
            </div>


            <div class='float_single_full' ></div>
            <div class='float_left bottom_chart' style="margin-left:10px;"><?php echo $chart->dayofweek(-3); ?></div>
            <div class='float_left bottom_chart'><?php echo $chart->dayofweek(-2); ?></div>
            <div class='float_left bottom_chart'><?php echo $chart->dayofweek(-1); ?></div>
            <div class='float_left bottom_chart'  style='font-weight:bold'><?php echo $chart->dayofweek(0); ?></div>
            <div class='float_left bottom_chart'><?php echo $chart->dayofweek(1); ?></div>
            <div class='float_left bottom_chart'><?php echo $chart->dayofweek(2); ?></div>
            <div class='float_left bottom_chart'><?php echo $chart->dayofweek(3);
                    echo ' username: ' . $_SESSION['user_name'];
                    ?></div>
        </div>
    </body>
</html>

9 个答案:

答案 0 :(得分:15)

如果在<?php标记之前甚至有空行,则无法设置标题。带行号的文件开头应如下所示:

1. <?php
2. session_start();
3. header('Cache-control: private');

消息显示“第2行发送的标题”,因此您在home.php的第4行输出了一些内容(空格,空白行等)

如果此文件是include,则应将session_start();放在home.php的顶部,然后在此文件中不需要它。

答案 1 :(得分:3)

这意味着您在调用session_start()之前打印了一些内容。

您不得在session_start()之前打印任何内容。

错误消息表明您首先在第4行的C:\ xampp \ htdocs \ pages \ home.php中打印了一些内容。

答案 2 :(得分:3)

head 标记之前编写此代码。如下所示:

<?php ob_start(); ?>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<?php

session_start();
?>
</body>

答案 3 :(得分:2)

  1. 打开您的php.ini file
  2. 修改session.auto_start = 0session.auto_start = 1
  3. 重启apache服务。

答案 4 :(得分:1)

如果以上所有答案都不适合您:

有些编辑在将文件保存为UTF-8时,会在一开始就将额外的字符粘贴到文件中(格式不需要它,但无论如何都要这样做)。然后拒绝在显示文件时向您显示这些字符。要查看您的编辑器是否是其中之一,请尝试保存一个空文件并查看它占用的字节数。如果它超过零(可能是三个),那么你将不得不告诉你的编辑停止搞乱(你如何做到这一点取决于编辑器)。

如果将文件另存为ANSI,则不会发生这种情况。

答案 5 :(得分:1)

尝试在页面的最顶部粘贴<?php ob_start(); ?>。它将像魔术一样工作。

答案 6 :(得分:1)

我也遇到了同样的问题并通过在php页面顶部写下面的代码来解决这个问题:

<?php
session_start();
?>

答案 7 :(得分:1)

使用

session_cache_limiter(FALSE); 

之前

session_start();

这肯定会帮助你:)

答案 8 :(得分:0)

我知道这篇文章有点过时,但我发现当文件的编码设置为包含BOM时,我遇到了这个问题。当我将编码设置为UTF-8(没有BOM)时,它解决了我的问题。