Hallo alle zusammen,
auf einem Windows Server 2012 mit Apache 2.4 und PHP 5.5.11 kommt ab und zu der oben genannte Fehler.
Ab und zu bedeutet, dass der User manchmal nach 2 Minuten, manchmal nach 30 Minuten automatisch abgemeldet wird.
Mittels
verhindere ich die header already sent Meldung.
Hat der User nicht die erforderlichen SESSION Daten, so wird er mit dem folgendem Script auf die Login Seite geleitet:
Das kuriose an der Sache ist, dass der User sich anmelden kann, es wird eine sess_** Datei in dem Verzeichnis erstellt und erst später kommt plötzlich die Meldung.
Nachdem ich nun eine vermutung mit konkurierenden Dateizugriff hatte, habe ich die session_start wie folgt angepasst:
Das Script läuft nicht unendlich lang. Nach einem missglücktem session_start() -> permission denied läuft der zweite Durchlauf ohne Probleme. Das deutet auch auf ein korrekt konfiguriertes Session Verzeichnis hin.
Leider sind dann die vorher gespeicherten SESSION Daten trotzdem weg und der User wurde abgemeldet. Auch die entsprechenden sess_** Dateien haben nur noch die Standarddaten:
Die angehängten *.js und *.css Dateien werden ebenfalls als php geparst und rufen auch die startSession Methode auf. Kann es dadurch zu Dateikonflikten kommen?
In meiner Verzweiflung habe ich das Projekt auf insgesamt drei andere Server kopiert und hatte bei keinem ein Session Problem. Mein Testuser war mehr als 6 Stunden ohne Abbruch angemeldet. Auf diesen Servern blieb die error.log der Seite und des Apaches bei 0 Byte größe.
Das deutet doch auf eine fehlerhafte Einstellung im Server hin...
Die php.ini, httpd.conf und der Webseitenordner ist auf allen Servern identisch. Auch die Sicherheitseinstellungen der Ordner / Dateien sind identisch und der Apache Dienst läuft unter dem "lokales System" Konto.
Habt ihr erfahrenen Leute da draußen noch einen Hinweis an welcher Stelle ich nach dem Fehler suchen könnte?
Gruß,
Checker
auf einem Windows Server 2012 mit Apache 2.4 und PHP 5.5.11 kommt ab und zu der oben genannte Fehler.
Ab und zu bedeutet, dass der User manchmal nach 2 Minuten, manchmal nach 30 Minuten automatisch abgemeldet wird.
Mittels
PHP-Code:
ob_start()
Hat der User nicht die erforderlichen SESSION Daten, so wird er mit dem folgendem Script auf die Login Seite geleitet:
PHP-Code:
header('Location:login.htm');
ob_end_clean();
exit;
Nachdem ich nun eine vermutung mit konkurierenden Dateizugriff hatte, habe ich die session_start wie folgt angepasst:
PHP-Code:
public function startSession() {
while($this->sessionState == false) {
$this->sessionState = @session_start();
if($this->sessionState == false) {
sleep(1);
}
}
}
Leider sind dann die vorher gespeicherten SESSION Daten trotzdem weg und der User wurde abgemeldet. Auch die entsprechenden sess_** Dateien haben nur noch die Standarddaten:
Code:
WEBvisu|a:2:{s:3:"SRC";s:5:"login";s:5:"TOUCH";i:0}
In meiner Verzweiflung habe ich das Projekt auf insgesamt drei andere Server kopiert und hatte bei keinem ein Session Problem. Mein Testuser war mehr als 6 Stunden ohne Abbruch angemeldet. Auf diesen Servern blieb die error.log der Seite und des Apaches bei 0 Byte größe.
Das deutet doch auf eine fehlerhafte Einstellung im Server hin...
Die php.ini, httpd.conf und der Webseitenordner ist auf allen Servern identisch. Auch die Sicherheitseinstellungen der Ordner / Dateien sind identisch und der Apache Dienst läuft unter dem "lokales System" Konto.
Habt ihr erfahrenen Leute da draußen noch einen Hinweis an welcher Stelle ich nach dem Fehler suchen könnte?
Gruß,
Checker