Unable to set ‚session.gc_maxlifetime‘
- walkercz
- Člen | 9
Řeším tento problém
Unable to set ‚session.gc_maxlifetime‘ to value ‚10800‘ when session has been started by session.auto_start or session_start()
podařilo se mi pomocí úpravy v nette/config/extensions/netteextension.php
<?php
/*
if ($config['session']['autoStart'] === 'smart') {
$initialize->addBody('$this->session->exists() && $this->session->start();');
} elseif ($config['session']['autoStart']) {
$initialize->addBody('$this->session->start();');
}
*/
$initialize->addBody('ini_set("session.gc_maxlifetime", "1209600");');
$initialize->addBody('$this->session->start();');
//btw todle se zdá že taky funguje, ale pořád nefunguje přihlášení atd.
if ($config['session']['autoStart'] === 'smart') {
$initialize->addBody('ini_set("session.gc_maxlifetime", "1209600");');
$initialize->addBody('$this->session->exists() && $this->session->start();');
} elseif ($config['session']['autoStart']) {
$initialize->addBody('ini_set("session.gc_maxlifetime", "1209600");');
$initialize->addBody('$this->session->start();');
}
?>
alespoň zprovoznit aplikaci, bohužel při pokusu o přihlášení se sice objeví hláška přihlášen, ale do administrace se člověk jaksi nepodívá app se chová jakoby se člověk nepřihlásil, v logu nic není, na localhostu vše funguje jak před zakomentováním tak po zakomentování a přidání těch dvou řádků
Forum sem prohledal ostatně odtud vychází jakás takás tadyta úprava, která ale ne zcela funguje. Prosím o radu. Děkuji.
verze Nette Framework 2.0.10
Editoval walkercz (5. 1. 2014 13:12)
- Oli
- Člen | 1215
Asi ti moc nepomůžu, protože jsem s session.gc_maxlifetime nikdy nějak nepracoval, ale čeho chceš dosáhnout? Zahození session po nějakém čase? Sice nevím jak to funguje (jestli to garbage collerctor uklidí nebo nějak jinak), ale standardní nastavení Nette ti nestačí? neon, kratší expirace
- walkercz
- Člen | 9
Spíš jde o to že jaksi nefunguje session? .. bohužel vzhledem k tomu že to nikde nehází žádnou chybu netuším jestli je to někde v nette nebo v nastavení serveru nebo kde :( .. po té úpravě co píšu v prvním postu jsem nette stránky sprovoznil, ale bohužel nefunguje přihlášení (počítám, že to by se mělo ukládat do session a tím pádem je chyba někde tam asi)
na localhostu vše šlape jak má, problém je na produkčním serveru ke kterému bohužel nemám bližší info a ani nevím jestli je to nějak ovlivnitelné v tom bych potřeboval poradit…
v podstatě ani nepotřebuju tak dlouhou expiraci, ale hází to chybu i když její nastavení smažu z configu
Editoval walkercz (5. 1. 2014 21:31)
- David Grudl
- Nette Core | 8233
session.auto_start je vypnuté a nic nemůže volat session_start()? Requirements Checker říká co?
- walkercz
- Člen | 9
Register_globals Enabled
Configuration directive register_globals is enabled. Nette Framework requires
this to be disabled.
Session auto-start Disabled
Session auto-start is enabled. Nette Framework recommends not to use this
directive for security reasons.
zbytek check. může být tedy problém tu s těmi sessions?? Díky moc za tools nějak jsem na ně dřív nenarazil :-[
používám nette s prefixy
- Jakub Bouček
- Člen | 54
Tak s tímhle přesně bojuju právě teď :-( A tuším, že to způsobují knihovny (OAuth, Facebook a další), které pocházejí od třetích stran, nerespektují MVC, neřeší Nette a samy si startují session – i když jsou přes composer. Těžké řešení, zkusil jsem vypnout všechnu konfiguraci session v configu, ale to nic nezměnilo :-/
Jasně, dělají tí knihovny, ale přijde mi, že když si Nette knihovny samo volá (jako služby), neměly by mu takhle pomrvit prostředí.
Šlo by tedy nějak vynutít, aby session nastavrovala přes spuštěním služeb? Ideálně nějak rozmně, ne to narvat do bootstrapu…
- David Grudl
- Nette Core | 8233
Tak vždycky se to dá vyřešit pomocí configu
nette:
session:
gc_maxlifetime: null
- Majkl578
- Moderator | 1364
Jakub Bouček napsal(a):
Šlo by tedy nějak vynutít, aby session nastavrovala přes spuštěním služeb? Ideálně nějak rozmně, ne to narvat do bootstrapu…
To není řešení, jelikož ti to rozbije naopak ty zprasené knihovny.
Facebook jde upravit, jelikož používají abstraktní třídu a na session/storage používají jejího potomka, viz class Facebook extends BaseFacebook.