2016-11-25 1 views
2

Ich habe PHP 5.6 auf IIS 8.5 ausgeführt. Ich verwenden, um dieses Testprotokoll:PHP-Sitzung zurückgesetzt

echo '<p>'.sizeof($_SESSION).' - '.session_id().' - '.ini_get('session.cookie_domain').'</p>';

Damit ich sehe, dass $_SESSION einige Elemente hat, cookie_domain richtig in php.ini als meine Domain gesetzt, aber session_id() hat eine andere Zeichenfolge auf jeder Seite zu laden. session_start() wird bei jedem Laden der Seite aufgerufen.

Irgendeine Idee, was ich tun kann, um die Sitzung persistent zu machen?

$sessionfile = ini_get('session.save_path') . '/' . 'sess_'.session_id(); zeigt, wo die Sitzungsdatei ist. Ich kann es öffnen und Daten sind da. Tatsächlich ist es etwas in der Erstellung jeder Sitzung, nicht beim Speichern ihrer Dateien.

Ist es möglich, dass einige IIS-Einstellung oder einige ASP die Sitzung zurückgesetzt?

+0

Sie rufen diesen Code NACH 'session_start();' oder? – OptimusCrime

+0

Ja, session_start() ist eines der ersten Dinge, die ausgeführt werden. – Hikari

Antwort

0

Dieses Problem tritt am häufigsten auf, wenn Sie keine Berechtigungen zum Speichern der Sitzung in Ihrem IIS haben. Ich hatte das gleiche Problem vor langer Zeit. Um die Berechtigungen oder den Sitzungspfad zu korrigieren, habe ich mein Problem gelöst.

+0

Ich verstehe es. Aber ich glaube, das ist nicht das Problem, weil ich in der Lage bin, die Sitzungsdatei zu finden und sie zu öffnen, und Daten werden in dieser Datei gespeichert. Etwas setzt die Sitzung zurück, vielleicht das Cookie, das seine Referenz speichert. – Hikari