chrisfah
Goto Top

PHP verliert Inhald der SESSION nach Seitenwechsel, Cookie aber OK

Seltsames Problem mit dem inhalt der Globalen $_SESSION in PHP bei einem VServer von HostEurope: nach einem Seitenwechsel ist $_SESSIOn leer, obwohl die Sessin korrekt gesartet wird und per Cookie korrekt gespeichert wird.

Hallo,
ich habe bei HostEurope einen VServer unter Centos5 mit Plesk 9.5.

Bei einer neuen Domain, die zum Login einige Daten in $_SESSION schreibt, habe ich entdeckt, daß auf diesem VServer (auf allen Domains dieses VServers gleich) bei einem Seitenwechsel der Inhalt von $_SESSION verloren geht. Der Sessionname sowie die Session-id werden korrekt in einem Cookie gespeichert und übertragen.
Auf einem zweiten VServer unter Centos6 mit Pesk klappt das jedoch perfekt.

Ein kleines Testscript , das einen Wert in $_SESSION schreibt und dann per Klick auf einen Link sich selbst wieder aufruft, sollte das prüfen, und bestätigt meine Feststellung, daß bei jedem Seitenwechsel $_SESSION wieder jungfäulich ist.

Leider weiss ich nicht, wo ich da ansetzen soll, und auch der Support von HE lässt seit zwei Tagen auf sich warten....

Wer hat Hilfe ???

Lg, Chris

PS: Anbei die session settings lt phpinfo

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

Content-ID: 204149

Url: https://administrator.de/contentid/204149

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

110135
110135 30.03.2013 um 08:43:16 Uhr
Goto Top
Hi,

Klngt zunächst sehr seltsam. Magst du einmakndeinen testcode hier posten?

Gruß Florian
ChrisFah
ChrisFah 31.03.2013 aktualisiert um 20:58:46 Uhr
Goto Top
Hallo!

Anbei mein Code:
 
<?php
session_start();

if ($_SERVER['HTTP_REFERER']) {  
	if ($_SESSION['test']) {  
		echo '$_SESSION["test"] ist gesetzt: Inhalt: '.$_SESSION['test'].'<br /><br />';  
	} else {
		echo '$_SESSION ist leer. <br /><br />';  
	}
}
echo '===========================<br /><br />';  
echo '$_SESSION wird neu jetzt beschrieben:<br />';  

// Hier wird $_SESSION[test] gesetzt
$_SESSION['test'] = 'Ich bin da';  

echo 'Neu belegter Wert in SESSION = '. $_SESSION['test'];  
echo '<br /><br />';  

// Link auf sich selbst
echo '<a href="test.php">Seite neu laden</a>';  
echo '<br /><br />';  
?>


Das seltsame ist, daß dieses verhalten auf allen Domains dieses Vservers ist. Auf meinem zweiten Vserver klappt alles prima.

Lg, Chris
Arano
Arano 03.04.2013 um 06:42:02 Uhr
Goto Top
Moin moin,

mal ganz blöde.
Und wenn du Zeile 5+11 weg lässt ?

Wenn die Session-ID im Cookie existiert, kannst du die Session dann manuell nachladen !?


~Arano
ChrisFah
ChrisFah 03.04.2013 um 19:39:36 Uhr
Goto Top
Hallo,
zeile 5 + 11 ist nur dazu da, daß die Überprüfung beim ersten Aufruf des Scripts nicht stattfindet, da ja die Session erst beim ersten Aufruf beschrieben wird. Bei jedem weiteren Aufruf des Scripts durch Klick auf den Link, also wenn ein Referer existiert, wird dann auch die Session gecheckt.

ABER:
HE HAT DAS PROBLEM GELÖST !!!
Lt Techniker war ich schuld, da ich den Apachen als fast-cgi ausführen lasse, und dann dieser einen anderen Nutzer hat, der nicht ins php/session Verzeichnis schreiben kann...

Original:"wir konnten feststellen, dass Sie Apache unter Fast-CGI nutzen. Dies hat zur Folge, dass die Sessions unter einem anderen Nutzer geschrieben werden und konnten deshalb nicht in dem Ordner /var/lib/php/sessions angelegt werden konnten.
Wir haben nun die Dateirechte des Ordners /var/lib/php/sessions angepasst, sodass diese nun erstellt werden können."

Also, Problem gelöst.

Danke fürs Interesse.