ini_set():会话处于活动状态。您目前无法在codiegniter中更改会话模块的ini设置

时间:2018-09-10 07:00:43

标签: php codeigniter session

我检查了结果,但无法解决我的错误。
我只是使用了session_start,它给出了此警告消息。

  

ini_set():会话处于活动状态。您不能更改会话模块的   此时的ini设置

下面是我的代码-

$sess_array = array(
                      'id' => $row->empid,
                      'username' => $row->emp_name,
                      'loggedIn' => '1',
                      'usertype' => $usertype
                  );  
$this->session->set_userdata('logged_in', $sess_array); // store session    

Dashboard.php页面-

session_start();   

error_reporting(E_ALL & ~E_NOTICE);    

//error_reporting(0);   

if (!defined('BASEPATH'))    

 exit('No direct script access allowed');    




class Dashboard extends CI_Controller
{

public function __construct()
{
    parent::__construct();

}

public function index()
{

    if ($this->session->userdata('logged_in'))
    {
        $EmpName = $this->session->userdata['logged_in']['username'];
        $Emp_id = $this->session->userdata['logged_in']['id'];  
  }  
}  

尽管问了同样的问题,但是我没有为这个问题找到合适的解决方案。请任何人解决该查询。

3 个答案:

答案 0 :(得分:1)

这确实对我有用,基本上您首先检查会话,然后如果未初始化,则调用ini_set和其他对象,然后调用session_start()

contextBridge

因此您确实要在调用ini_set和session_set_cookie_params等之后开始会话

答案 1 :(得分:0)

您应该加载以下代码行,而不是使用session_start();来加载application/config/autoload.php文件中提供的会话库codeigniter:

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

或者,如果您想仅从Dashboard控制器加载库,则可以通过$this->load->library('session');加载库,您可以将其放入构造函数中以便能够在孔中使用它控制器,或以特定方法添加。

答案 2 :(得分:0)

我刚刚通过codeigniter 3.11.1更新了会话redis驱动程序文件:“ system / libraries / Session / drivers / Session_redis_driver.php”: new driver file 并且此错误已消失

在application / config / config.php文件中,请接下来输入:

$config['sess_driver'] = 'redis';
$config['sess_save_path'] = 'your-redis-instance:port'
$config['sess_match_ip'] = FALSE;
$config['sess_regenerate_destroy'] = FALSE;

到目前为止有效。