ako pouzit session s php session.gc_maxlifetime?
- PeterK
- Člen | 1
Hi
problem:
- v php.ini je default session.gc_maxlifetime = 1440
- config.neon ma default session: expiration: 14 days
- v kode je pouzite this->getUser()->setExpiration(‚+ 1 days‘)
Prihlasenie usera vydrzi iba tych 24 minut (1440 sec). Nette by mal na to hadzat notice podla \vendor\nette\http\src\Http\SessionSection.php
$time = Nette\Utils\DateTime::from($time)->format('U');
$max = (int) ini_get('session.gc_maxlifetime');
if ($max !== 0 && ($time - time() > $max + 3)) { // 0 - unlimited in memcache handler, 3 - bulgarian constant
trigger_error("The expiration time is greater than the session expiration $max seconds");
}
lenze ini_get(‚session.gc_maxlifetime‘) vracia 1209600, co je 14 dni, co je default hodnota v config.neon, ale nie hodnota v php.ini.
Otazka je, preco nette vracia 14 dni a nie aktualnu hodnotu z php.ini?
dik
- David Matějka
- Moderator | 6445
ta hodnota z configu zmeni session.gc_maxlifetime
(pokud to je
povoleno).. to, ze se to maze, muze byt zpusobeno necim jinym, viz https://play.nette.org/…nych-session
- newPOPE
- Člen | 648
Tiez sme s tym mali problem. Riesenie bolo zmenit php.ini nie pomocou configu na max hodnotu ktoru sme potrebovali.
Skus si dat cat /etc/cron.d/php5
. Ja tam mam defaultne nieco
taketo
09,39 * * * * root [ -x /usr/lib/php5/sessionclean ] && /usr/lib/php5/sessionclean
tym padom si myslim, ze Ti to tych 14 dni ignoruje resp. tie sa nastavia len
ked je PHP spustene cez web server.