Сеанс Codeigniter не был сохранен в базе данных при использовании драйвера базы данных - PullRequest
0 голосов
/ 07 декабря 2018

Сессия Codeigniter не сохранялась в базе данных при использовании драйвера базы данных на работающем сервере.Но он прекрасно работает в локальной среде.

Версия Codeigniter: 3.1.9 Версия PHP: 7.2.11

Ниже моей конфигурации codeigniter,

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 600;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 180;
$config['sess_regenerate_destroy'] = FALSE;

У всех есть идеи, пожалуйстапосоветуйте.

1 Ответ

0 голосов
/ 07 декабря 2018

Прежде всего вам нужно изменить конфиги для использования базы данных следующим образом:

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

Затем вам нужно создать таблицу для ваших сессий, и я создал файл миграции для этого:

class Migration_Create_ci_sessions extends CI_Migration
{    
    private $table;

    public function __construct()
    {
        parent::__construct();
        $this->load->dbforge();
        $this->table = 'ci_sessions';
    }

    public function up()
    {
        $this->dbforge->drop_table($this->table, TRUE);

        $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`)';

        $this->dbforge->add_field($ci_sessions);
        unset($ci_sessions);

        $this->dbforge->create_table($this->table, TRUE);
    }

    public function down()
    {
        $this->dbforge->drop_table($this->table, TRUE);
    }
}

или, если вы предпочитаете, вы можете использовать sql напрямую:

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`)
);

и, конечно, вам нужно загрузить или автозагрузить базу данных:

$autoload['libraries'] = array('database', 'session');

и установитьконфиги для базы данных правильно:

'username' => 'username',
'password' => 'password',
'database' => 'database',
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...