diff --git a/application/config/config.sample.php b/application/config/config.sample.php index 3bd0250d9..4f12b9e0e 100644 --- a/application/config/config.sample.php +++ b/application/config/config.sample.php @@ -460,6 +460,17 @@ $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE; +/* + * To make sure we do not collect infinite session we set some garbage collection settings + * see https://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability + * and https://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor + * and https://osvaldas.info/enabling-codeigniters-garbage-collector/ + * + * set the probability to 1/1000 to make sure we do not collect too often +*/ +$config['sess_gc_probability'] = 1; +$config['sess_gc_divisor'] = 1000; + /* |-------------------------------------------------------------------------- | Cookie Related Variables diff --git a/install/config/config.php b/install/config/config.php index b6d655ca2..a948717c1 100644 --- a/install/config/config.php +++ b/install/config/config.php @@ -460,6 +460,17 @@ $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE; +/* + * To make sure we do not collect infinite session we set some garbage collection settings + * see https://www.php.net/manual/en/session.configuration.php#ini.session.gc-probability + * and https://www.php.net/manual/en/session.configuration.php#ini.session.gc-divisor + * and https://osvaldas.info/enabling-codeigniters-garbage-collector/ + * + * set the probability to 1/1000 to make sure we do not collect too often +*/ +$config['sess_gc_probability'] = 1; +$config['sess_gc_divisor'] = 1000; + /* |-------------------------------------------------------------------------- | Cookie Related Variables diff --git a/system/libraries/Session/Session.php b/system/libraries/Session/Session.php index 066e6a0e6..4948ead2f 100644 --- a/system/libraries/Session/Session.php +++ b/system/libraries/Session/Session.php @@ -124,6 +124,9 @@ class CI_Session { unset($_COOKIE[$this->_config['cookie_name']]); } + ini_set('session.gc_probability', config_item('sess_gc_probability') ?? 1); + ini_set('session.gc_divisor', config_item('sess_gc_divisor') ?? 1000); + session_start(); // Is session ID auto-regeneration configured? (ignoring ajax requests)