在Codeigniter 3.0中,致命错误:在C:\ mypath \ system \ libraries \ Session \ drivers \ Session_database_driver.php中调用boolean上的成员函数row()

时间:2015-07-28 06:23:25

标签: php json codeigniter

我尝试在数据库中设置会话。但似乎行不通。

数据库

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";
    }
}

错误

enter image description here

2 个答案:

答案 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;

阅读Session Preferences

请勿忘记在使用前加载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