Sessions nastavení a platnosti

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

Úplně se mi nedaří správně nastavit session. Menší projekt (4–5 aktivních uživatelů, jeden cron), roboti se nikam nedostanou, protože je vyžadováno přihlášení.

Denně ten projekt vytváří ~2000 sessions souborů. Divné je, že ty soubory jsou „postižené“ a nejdou z FTP stáhnout ani otevřít. Nefunguje ani nastavení lifetime, pokud ho nedám natvrdo do boostrapu přes gc_maxlifetime. Zkoušel jsem nastavit cesty, autoStart a podobně, ale zatím nic nepomohlo. Nějaké nápady? Nemůže to být tím přihlašovacím formulářem s CSFR ochranou? Nebo od čeho se odpíchnout a co zkontrolovat. Chtěl jsem se podívat do té session, ale nedá se k ní přistoupit, ale jako soubor jí vidím a práva má 0600 (to je možná problém), že tu session nemůže číst nic jiného a tak jí vytvoří znovu.

session:
  autoStart: smart
  cookiePath: '/' #zkoušel jsem i bez a domainName
  expiration: '+ 100 days'
  savePath: %tempDir%/sessions

PHP verze a nastavení session na serveru → 5.4.45.

session.auto_start	Off	Off
session.cache_expire	180	180
session.cache_limiter	nocache	nocache
session.cookie_domain	no value	no value
session.cookie_httponly	On	Off
session.cookie_lifetime	8636400	0
session.cookie_path	/	/
session.cookie_secure	Off	Off
session.entropy_file	/dev/urandom	/dev/urandom
session.entropy_length	32	32
session.gc_divisor	1000	1000
session.gc_maxlifetime	8636400	1440
session.gc_probability	0	0
session.hash_bits_per_character	5	5
session.hash_function	0	0
session.name	PHPSESSID	PHPSESSID
session.referer_check	no value	no value
session.save_handler	files	files
session.save_path	/opt/bcom/var/www/modulservis/modulpoint.cz/www/app/../temp/sessions	/var/lib/php5
session.serialize_handler	php	php
session.upload_progress.cleanup	On	On
session.upload_progress.enabled	On	On
session.upload_progress.freq	1%	1%
session.upload_progress.min_freq	1	1
session.upload_progress.name	PHP_SESSION_UPLOAD_PROGRESS	PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix	upload_progress_	upload_progress_
session.use_cookies	On	On
session.use_only_cookies	On	On
session.use_trans_sid	0	0
skrivy
Člen | 51
+
-3
-

Za sebe (jako za hostera) muzu rict, ze nenavidim, kdyz vyvojari sahaji do nastaveni sessions a presouvaji si je jinam. Akorat jsou s tim pak problemy – hlavne tedy se zalohovanim, protoze se zalohuje spousta zbytecnych souboru, ktere se v dalsi iteraci zase mazou.

Pavel Kravčík
Člen | 1196
+
0
-

@skrivy: Však to nemá žádný vliv, jestli si to nastavíš sem nebo tam, pokud si to hoster nastaví stejně. ;) Takže nic navíc se nezálohuje.

skrivy
Člen | 51
+
0
-

Pavel Kravčík napsal(a):

@skrivy: Však to nemá žádný vliv, jestli si to nastavíš sem nebo tam, pokud si to hoster nastaví stejně. ;) Takže nic navíc se nezálohuje.

Nechapu. Kdyz zalohuju web, tak mu necham zazalohovat adresare se zdrojaky a daty, naopak excludnu adresare s logy a tempem. … Nicmene, mam tim na mysli adresare, ktere jsou nastaveny ze strany serveru jako temp a log. Nikoliv, co si aplikace mysli, ze je log a temp. Opravdu neni ok prochazet kazdy web a upravovat zalohovani podle toho, jestli bezi na frameworku X nebo Y.

Editoval skrivy (21. 12. 2015 13:51)

CZechBoY
Člen | 3608
+
0
-

@skrivy Takže vlastně Nette je totální anti-framework, protože používá „externí“ složky temp, log namísto třeba /var/log, /tmp

Pavel Kravčík
Člen | 1196
+
0
-

@skrivy: Díky za postřehy, ale rád bych řešil můj problém a ne neschopnost komunikovat s klienty. :) Pokud bychom měli nějaký veřejný hosting, tak asi upravíme cestu. Máme vlastní řešení a nezálohujeme ani zdrojové soubory typu index.php, jen data z „fileStorage“.

A ještě je zvláštní, že se tak neděje ve starším Nette, ale jen v 2.3+

skrivy
Člen | 51
+
0
-

CZechBoY napsal(a):

@skrivy Takže vlastně Nette je totální anti-framework, protože používá „externí“ složky temp, log namísto třeba /var/log, /tmp

To vubec nerikam. Jen nechapu, proc se ma prepisovat nastaveni serveru, kde uz spousty veci funguje a maji tam smysl.

A to nastaveni v uvodnim prispevku, kde nastavuje expiraci na 100 dni, je krasna ukazka toho, co se stane, kdyz se lidem da moc velka svoboda. Pak to skonci tak, ze u navstevovanejsiho webu zustane na serveru adresar se spoustou souboru v nem, zalohovani (a nejenom to) bude kvuli tomu (uplne zbytecne) pomale a kdyz to nahlasim zakaznikovi, tak mi akorat rekne, ze se jeho programator nema cas a jebe na to. Tohle je mimochodem velmi casty scenar, ktery posledni dobou vidim.

Tak a ted co s tim?

Editoval skrivy (21. 12. 2015 14:34)

skrivy
Člen | 51
+
0
-

Pavel Kravčík napsal(a):

@skrivy: Díky za postřehy, ale rád bych řešil můj problém a ne neschopnost komunikovat s klienty. :) Pokud bychom měli nějaký veřejný hosting, tak asi upravíme cestu. Máme vlastní řešení a nezálohujeme ani zdrojové soubory typu index.php, jen data z „fileStorage“.

A ještě je zvláštní, že se tak neděje ve starším Nette, ale jen v 2.3+

Zkus ziskat obsah toho souboru se session a podivej se do nej.

Jinak nastaveni prav, se kteryma se sessions vytvari, muzes udelat pomoci session.savepath: http://php.net/…guration.php#…

The file storage module creates files using mode 600 by default. This default can be changed with the optional MODE argument: N;MODE;/path where MODE is the octal representation of the mode. Setting MODE does not affect the process umask.

Editoval skrivy (21. 12. 2015 15:02)

Aurielle
Člen | 1281
+
+1
-

Pokud jedeš na vlastním stroji a máš Debian/Ubuntu, tak tam je vypnuté pročišťování sessions v PHP (gc.probability je 0) a místo toho to řeší cron, který ale nezohledňuje vlastní cesty. Možná je to i tvůj problém, řešením je (nejspíš) nastavit již zmíněnou gc.probability na >0. Netestoval jsem.

Pavel Kravčík
Člen | 1196
+
0
-

Ok, díky. To zní dobře. Vrátím ty testovací lifetime a zkusím se na to podívat. :)