Autor Zpráva
Stepanka
Profil *
Ahoj,

můžou být na serveru vypnuté session?

Dělám stránky pro jednu univerzitu, technici teď na serveru něco měnili a všude, kde je v kódu část
if (isset($_SESSION['nejaka'])) { ... }
tak tahle část se nikdy neprovede.. i když do dané session o pár řádků výš normálně nacpu hodnotu..

Zkopíruju kousek phpinfo(), třeba z toho něco poznáte:

session
Session Support 	enabled
Registered save handlers 	files user
Registered serializer handlers 	php php_binary wddx

Directive	Local Value	Master Value
session.auto_start	Off	Off
session.bug_compat_42	Off	Off
session.bug_compat_warn	On	On
session.cache_expire	180	180
session.cache_limiter	nocache	nocache
session.cookie_domain	no value	no value
session.cookie_lifetime	0	0
session.cookie_path	/	/
session.cookie_secure	Off	Off
session.entropy_file	no value	no value
session.entropy_length	0	0
session.gc_divisor	1000	1000
session.gc_maxlifetime	1440	1440
session.gc_probability	1	1
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	/var/lib/php/session	/var/lib/php/session
session.serialize_handler	php	php
session.use_cookies	On	On
session.use_only_cookies	Off	Off
session.use_trans_sid	0	0
Majkl578
Profil
"Session Support enabled" -> zakazane tedy pravdepodobne nejsou, nezapomela jsi je zapnout - session_start() ?
Stepanka
Profil *
Majkl578
Nezapomněla, ještě včera to šlapalo, takže session_start() tam mám už od začátku.. Ale díky.
Stepanka
Profil *
Vypnuli taky SMTP, protože najednu nefunguje odesílání mailů ... ale když jsou session zapnuté, tak bych se chtěla zeptat - Existuje ještě něco, co mohli vypnout a co by ovlivnilo (deaktivovalo) session?
bohyn
Profil
Stepanka
Nastaveni vypada standartne. At technici zkontroluji zda ma apache zapisovaci prava v adresari "/var/lib/php/session"

tak tahle část se nikdy neprovede.. i když do dané session o pár řádků výš normálně nacpu hodnotu..
Tohle nefunguje?
<?php
session_start();
$_SESSION['test'] = true;
if(isset($_SESSION['test']))
  echo "nastaveno";
else
  echo "nenastaveno";
?>
Stepanka
Profil *
bohyn
Tak jsem narazila jednu "zázračnou" věc...

Tvůj skript mi vypsal "nastaveno", ale zkusila jsem toto:

skript pokus.php:
<?php
session_start();
ob_start();
$_SESSION['test'] = 8;
if(isset($_SESSION['test'])) {
  echo "nastaveno";
  header("Location: pokus2.php");
} else {
  echo "nenastaveno";
}
?>


skript pokus2.php:
<?php
session_start();
if(isset($_SESSION['test']))
  echo "nastaveno2";
else
  echo "nenastaveno2";
?>

Když spustím skript pokus.php, provede se přesměrování a vypíše se "nenastaveno2"... Ale proč? Neměla by po přesměrování zůstat sesion zachována?
bohyn
Profil
Stepanka
Pokud nema Apache/PHP zapisovaci prava pro vyse uvedeny adresar, tak si nemuze danou session zapamatovat. Zaptej se spravce jestli jsou nastavena prava v poradku.
Stepanka
Profil *
bohyn
Jasně, díky moc, to se zeptám. Ale ono potom nevadí, že Tvůj skript mi vypsal "nastaveno"? To je normální, že když nemá ty zapisovací práva, tak si session zapamatuje jen do přesměrování? Kam si ji ukládá, než přesměruje?
bohyn
Profil
Stepanka
Do presmerovani ma promenou v pameti, po ukonceni ji zapise (respektive pokusi se) do souboru na disku a uvolni pamet obsazenou danym scriptem (tedy zapomene tu promenou). Presmerovani je jiny HTTP dotaz, takze pri zavolani funkce start_session() si vezme session ID z cookie (kterou nastavil v prvnim dotazu) a pokusi se ji nacist z disku. Pokud ji na disku nenajde tak zalozi novou session.
Stepanka
Profil *
bohyn
Děkuju za info.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: