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


Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at

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

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


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 行.php:

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

提前谢谢你!

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),其中包含其他文件

我希望这对你有帮助。

session_start() 函数只调用 top。

<?php
session_start();