Сообщение: ini set (): сеанс активен. В настоящее время невозможно изменить параметры ini модуля сеанса

Я создал страницу входа в систему с codeigniter, но я получаю сообщение php.

Message: ini_set(): A session is active. You cannot change the session module's ini settings at this time

как это исправить?

посмотреть (логин.в PHP)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Admin Login</title>
<link rel="stylesheet" href="../css/normalize.css">
<link rel="stylesheet" href="../css/admin-style.css">
</head>
<body>
    <?php echo form_open('Verify_login', ['id'=>'loginForm', 'name'=>'loginForm', 'method'=>'post']) ?>
    <div class="login">
        <div class="log-box">
            <h3>Login</h3>
            <div >
                  <input id="username" name="username" placeholder="User Name" value="" type="text" >
                <?php echo form_error('username'); ?>
                <input id="Password" name="password" placeholder="Password" required type="password">
                <?php echo form_error('password'); ?>
                <div class="remember-me">
                    <input id="checkBox" type="checkbox">
                    <label for="checkBox">Remember Me</label>
                </div>
                <button class="login-button" name="loginButton">Login</button>
            </div>
        </div>
    </div>
 </form>
</body>
</html>

4 ответов


Я думаю, что вы новичок в концепции фреймворка и ООП.

вам не нужна эта линия в админ.в PHP

session_start(); //need to call PHP's session object to access it though it

когда вы загружаете библиотеку сеансов, конструктор делает это за вас.


сообщение означает, что вы начали сессию с session_start() в котором далее в коде вы используете ini_set() для управления модулем сеанса. Если вы управляете модулем сеанса, это должно быть сделано до того, как сеанс запущен и активен.


сообщение: ini_set (): сеанс активен. Вы не можете изменить настройки ini модуля сеанса в это время

у меня было такое же сообщение об ошибке некоторое время назад, по умолчанию код-igniter будет писать в файл (C:\xampp\tmp) в моем случае. Но я хочу, чтобы он писал в базу данных.

в вашем загрузчике вы могли бы иметь что-то вроде этого:

//:::::$autoload['libraries'] = array();
//'session', this mean start session ini_set()
$autoload['libraries'] = array('session', 'database');

по умолчанию в config/config.PHP сессии configurartion выглядеть так:

$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

на документация указано, что использовать базу данных вместо файла вы должны сначала создать таблицу в базе данных приложения.

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);

вернуться config / config.в PHP, и $config['sess_driver'] = 'files'; до $config['sess_driver'] = 'database';

как так, я думал, что все должно быть хорошо, но я получил ошибку сообщение: ini_set (): сеанс активен. Вы не можете изменить настройки ini модуля сеанса при этом время

моим решением было сначала запустить session_destroy();

затем измените имя сеанса и имя таблицы

моя конфигурация выглядит так:

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'newname_session';
$config['sess_expiration'] = 72000;
$config['sess_save_path'] ='newname_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

сохранить все и после обновления страницы все очищено, сообщение об ошибке не отображается


  1. перейдите в файл \система\библиотеки\сессия\сессия.
  2. раскомментируйте session_start () в строке 143, и все готово.