Maneesh Sharma
Maneesh Sharma

Reputation: 63

ini_set(): A session is active. You cannot change the session module's ini settings at this time in codiegniter

I have checked the result but unable to solve my error.
I have simply used session_start and it gives this warning message.

ini_set(): A session is active. You cannot change the session module's ini settings at this time

Below is my code -

$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 page-

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'];  
  }  
}  

Although the same question has asked but i didnt get the proper solution for this question. Please anyone solve that query.

Upvotes: 1

Views: 10442

Answers (3)

Luis De Lima
Luis De Lima

Reputation: 1

I just updated my session redis driver file: "system/libraries/Session/drivers/Session_redis_driver.php" by codeigniter 3.11.1 one: new driver file and this error has disappeared

in application/config/config.php file please put next:

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

it works so far.

Upvotes: 0

Irshad Babar
Irshad Babar

Reputation: 1419

This is really working for me, basically you check for session first then if it is not initialized then you call ini_set and others and then call the session_start()

if (!isset($_SESSION)) {

// server should keep session data for AT LEAST 24 hour
ini_set('session.gc_maxlifetime', 60 * 60 * 24);

// each client should remember their session id for EXACTLY 24 hour
session_set_cookie_params(60 * 60 * 24);
session_start();
}

so you do start your session after calling ini_set and session_set_cookie_params etc

Upvotes: 1

MAZux
MAZux

Reputation: 971

Instead of using session_start(); you should load the session library codeigniter has provided for you in the application/config/autoload.php file go the line where:

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

Or if you want to load the library from only your Dashboard controller, you can load it via $this->load->library('session');, where you can put it in the constructor to be able to work with it inside the hole controller, or add it in a specific method.

Upvotes: 0

Related Questions