Unable to set ‚session.gc_maxlifetime‘

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
walkercz
Člen | 9
+
0
-

Ř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)

walkercz
Člen | 9
+
0
-

sem dost bezradný hraju si s tím celý den a protože to nehází žádnou další chybu tak nevím jak pokračovat, případně jak to vyřešit

Oli
Člen | 1215
+
0
-

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
+
0
-

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
+
0
-

session.auto_start je vypnuté a nic nemůže volat session_start()? Requirements Checker říká co?

walkercz
Člen | 9
+
0
-

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
+
0
-

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
+
0
-

Tak vždycky se to dá vyřešit pomocí configu

nette:
	session:
		gc_maxlifetime: null
Majkl578
Moderator | 1364
+
0
-

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.