我尝试在数据库中设置会话。但似乎行不通。
数据库
CREATE TABLE IF NOT EXISTS `ci_sessions` (
`id` varchar(40) NOT NULL,
`ip_address` varchar(45) NOT NULL,
`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
`data` blob NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);
的config.php
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
源代码
class Login extends CI_Controller {
public function __construct()
{
parent::__construct();
}
public function index(){
echo "test";
}
}
错误
答案 0 :(得分:1)
将application/config/config.php
文件设置更改为
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_sessions';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';//its your table name name
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
请勿忘记在使用前加载autoload.php
或加载$this->load->library('session');
。
答案 1 :(得分:0)
首先将application / config / config.php设置更改为:
$config['log_threshold'] = 1;
$config['db_log_enabled'] = FALSE;
您的日志中会收到更多信息错误。您可以在以下位置找到日志:
/application/logs/
有一个涉及ipv6 ip地址的CI错误。如果主要错误如下所示,您遇到此错误:
ERROR - 2016-11-20 09:59:03 --> Severity: Warning --> mysqli::query(): (42000/3057): Incorrect user-level lock name 'longrandomsessionnamestring_2001:db8:1234:1:567::1'. /var/www/html/www/system/database/drivers/mysqli/mysqli_driver.php 305
您可以通过其ipv4地址直接访问您的网站来验证这是问题(您不应再出现此错误)。
如果你通过ipv6而不是通过ipv4得到错误,你可以通过设置来缓解问题
$config['sess_match_ip'] = FALSE;
或者更好地将CI热修复#4916应用于您的CI代码
https://github.com/bcit-ci/CodeIgniter/commit/e49aa1f1cb63ad90d6c2d204439f538dcc282243