如何使 Codeigniter 会话与边缘一起工作?

How can I make Codeigniter session work with edge?

我检查了 edge 中的会话 cookie,但它不可用。在 chrome 中,会话 cookie 工作正常。我在设置 session

时同时尝试了 php superglobal $_SESSION[] 和 magic getter $this->session->set_userdata($newdata);

这是会话配置值:

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

这是 cookie 配置值:

$config['cookie_prefix'] = 'ncitce';
$config['cookie_domain'] = 'localhost';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = TRUE;

实际上,我所有的 CodeIgniter 3 项目在 Edge 中都运行良好。请在 config.php 文件

中尝试此配置
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

$config['cookie_prefix']    = '';
$config['cookie_domain']    = '';
$config['cookie_path']      = '/';
$config['cookie_secure']    = FALSE;
$config['cookie_httponly']  = FALSE;

记得在您的数据库中创建 ci_session table。

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

如果以上方法失败请在下方留言。

如果您使用的是较低的codeigniter版本,您可以将CI的会话class替换为这个class,它在服务器上存储会话数据:

https://github.com/bcit-ci/CodeIgniter/wiki/Dariusz-Debowczyk%27s-Session-Class

另请参阅此 link 进行讨论: https://expressionengine.com/forums/archive/topic/135722/codeigniter-session-problems-thread