警告:session_start():无法发送会话缓存限制器 - 已发送的标头(输出始于

时间:2016-04-28 11:06:54

标签: php session

我在尝试设置登录系统时遇到错误。我尝试了多种解决方案"但是没有一个能够将start_session放在所有脚本的顶部。

  

警告:session_start():无法发送会话缓存限制器 - 标头   已发送(输出开始于   test4 \ index.php: 311 )in   第4行的test4 \ classes \ Login.php

第311行:

    <?php // line 311
    if (version_compare(PHP_VERSION, '5.3.7', '<')) {
        exit("Please upgrade the PHP version to 5.3.7 or higher.");
    } else if (version_compare(PHP_VERSION, '5.5.0', '<')) {
        require_once("libraries/password_compatibility_library.php");
    }

    require_once("config/db.php");
    require_once("classes/Login.php");

    $login = new Login();

班级第28行/ Login.php:

<?php
class Login {
    private $db_connection = null;
    public $errors = array();
    public $messages = array();
    public function __construct() {

        session_start(); // line 28

提前谢谢!

2 个答案:

答案 0 :(得分:3)

session_start()函数应该在您的文件之上,如下所示:

<?php
session_start(); // Should be on top when using $_SESSION

class Login {
    private $db_connection = null;
    public $errors = array();
    public $messages = array();
    public function __construct() {

        // Rest of your scripts

导致此错误的原因是已发送的标头已经发送,因此加载session_handler()的时间也很晚,这就是为什么您必须将其置于文件顶部以使用标头加载它。

如果您使用包含页面的框架,则只需在主文件中使用session_start()一次(例如 index.php ),其中包含其他文件

我希望这会对你有所帮助。

答案 1 :(得分:3)

session_start()函数调用只是顶部。

<?php
session_start();