Seite 1 von 2
Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: So 20. Okt 2024, 11:47
von Bernhard_4711
Moin Zusammen,
seit Neuestem bekomme ich diese Fehlermeldung in errorlog.txt:
[19-Oct-2024 11:16:43 UTC] PHP Notice: session_start(): Ignoring session_start() because a session is already active (started from /var/www/btmr/contenido/classes/class.session.php on line 110) in /var/www/btmr/contenido/includes/frontend/include.front_content.php(715) : eval()'d code on line 253
Eine Idee, was das sein könnte?
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: So 20. Okt 2024, 13:05
von xmurrix
Hallo Bernhard,
der Hinweis besagt, dass versucht wurde, die Session zu starten, die Session aber schon vorher gestartet ist.
Das kann passieren, wenn man die Funktion session_start() mehrmals aufruft.
Da der Hinweis in der include.front_content.php in Zeile 715 vorkommt, also beim Auswerten des Codes der Seite, kannst du davon ausgehen, dass irgendwo in einem Layout, in einem Modul oder in einem Plugin session_start() aufgerufen wird.
Normalerweise braucht man das nicht, da die Session eigentlich schon beim Initialisieren von CONTENIDO gestartet wird, also schon vor include.front_content.php (Zeile 715). In CONTENIDO wird die Session beim Aufruf der Funktion cRegistry::bootstrap() gestartet.
Falls in einem Layout, in einem Modul oder in einem Plugin session_start() benötigt wird, sollte man das vorher prüfen, z. B. mit:
Manche Formular- oder Captcha-Module arbeiten mit der Session, daher kann es sein, dass es in einem solcher Module vorkommt.
Lange Rede kurzer Sinn:
Es ist ein Hinweis und kein Fehler, du kannst das auch ignorieren.
Gruß
xmurrix
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: So 20. Okt 2024, 17:47
von Bernhard_4711
Hallo Murat,
xmurrix hat geschrieben: ↑So 20. Okt 2024, 13:05
Lange Rede kurzer Sinn:
Es ist ein Hinweis und kein Fehler, du kannst das auch ignorieren.
das wollte ich lesen! Vielen Dank dafür.

Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: So 20. Okt 2024, 17:55
von Bernhard_4711
Der Aufruf kommt übrigens tatsächlich nur hier vor: class.session.php on line 110 Ich habe das, wie von Dir vorgeschlagen, durch ein isset() abgefangen und werde das beobachten.
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: So 20. Okt 2024, 18:21
von xmurrix
Bernhard_4711 hat geschrieben: ↑So 20. Okt 2024, 17:55
Der Aufruf kommt übrigens tatsächlich nur hier vor:
class.session.php on line 110 Ich habe das, wie von Dir vorgeschlagen, durch ein isset() abgefangen und werde das beobachten.
Eigentlich sollte das nicht sein, da das in class.session.php schon in Zeile 84 - 86 geprüft wird:
Die Variable $_SESSION existiert erst dann, wenn auch session_start() aufgerufen wurde.
Falls also irgendwo schon session_start() aufgerufen wird, sollte die Prüfung in class.session.php in Zeile 84 - 86 das erkennen und somit den erneuten Aufruf von session_start() umgehen.
Warum das bei dir nicht funktioniert, kann ich leider nicht sagen, das müsste genauer untersucht werden.
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Mo 21. Okt 2024, 11:12
von Bernhard_4711
Habe ich auch gerade gesehen. Mein isset() ist sinnlos, wenn die Variable $_SESSION bereits existiert. Dann wird die Funktion __construct direkt in der Zeile 85 mit einem
beendet. Und ich glaube kaum, daß diese Variable in dieser Funktion direkt nach der Abfrage in Zeilen 84-86 gesetzt wird. Daher wird auch mein nun maskierter
nicht ausgeführt. Könnte sein, daß ich dadurch eine gewünschte Funktionalität gekillt habe. Ich nehme das daher wieder raus.
...und, schwupp, kommen wieder diese Meldungen wegen bereits gestarteter Session...

Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Di 22. Okt 2024, 15:58
von xmurrix
Die Prüfung der PHP-Session in class.session.php schon in Zeile 84 - 86 ist mit hoher Wahrscheinlichkeit fehlerhaft.
Besser wäre es, wenn man die Stelle
in wie folgt ändert:
Code: Alles auswählen
if (in_array(session_status(), [PHP_SESSION_DISABLED, PHP_SESSION_ACTIVE])) {
return;
}
Ich erstelle mal ein Ticket in GitHub dazu. Danke dir für den Hinweis.
Nachtrag:
Das Ticket
#508 dazu im Github.
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Do 24. Okt 2024, 12:13
von Bernhard_4711
Und was ist mit dem Aufruf von
in
class.session.php?
Ich habe die Zeilen 84-86 mal wie von Dir vorgeschlagen geändert und werde das beobachten.
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Do 24. Okt 2024, 12:42
von xmurrix
Bernhard_4711 hat geschrieben: ↑Do 24. Okt 2024, 12:13
Und was ist mit dem Aufruf von
in
class.session.php?
Ich habe die Zeilen 84-86 mal wie von Dir vorgeschlagen geändert und werde das beobachten.
Die Funktion der Klasse cSession (class.session.php) ist es, die Session zu mit den entsprechenden Optionen zu starten und die Einträge darin zu verwalten.
Am Anfang der Konstruktor-Funktion sollte geprüft werden, ob die Session schon gestartet wurde, falls ja, dann sollte die Session nicht erneut gestartet werden. Das würden folgende Zeilen übernehmen:
Code: Alles auswählen
if (in_array(session_status(), [PHP_SESSION_DISABLED, PHP_SESSION_ACTIVE])) {
return;
}
Falls die Sessions deaktiviert sind oder eine Session schon existiert, wird die Funktion verlassen. Ansonsten wird die weitere Logik ausgeführt, die die Session startet.
Ich würde aber an deiner Stelle prüfen, wer überhaupt die Session gestartet hat. Passiert das in einem Modul oder in einem Plugin, oder ist PHP so eingestellt, dass die Session automatisch startet?
Falls die Session nicht mit der Klasse cSession gestartet wird, können die für die Session konfigurierten Optionen nicht gesetzt werden.
Hinweis:
Den Codeschnipsel in meiner vorherigen Antwort habe ich korrigiert, die war falsch.
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Fr 25. Okt 2024, 11:19
von Bernhard_4711
xmurrix hat geschrieben: ↑Do 24. Okt 2024, 12:42
Ich würde aber an deiner Stelle prüfen, wer überhaupt die Session gestartet hat. Passiert das in einem Modul oder in einem Plugin, oder ist PHP so eingestellt, dass die Session automatisch startet?
Wie kann ich das ermitteln?
Hinweis:
Den Codeschnipsel in meiner vorherigen Antwort habe ich korrigiert, die war falsch.
Ok, habe ich geändert.

Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Fr 25. Okt 2024, 11:30
von Oldperl
Servus,
Bernhard_4711 hat geschrieben: ↑Fr 25. Okt 2024, 11:19
Wie kann ich das ermitteln?
Du kannst im Code-Cache (
cms/cache/code) in die con-code PHP-Dateien schauen, und diese nach einem Sessionstart durchsuchen.
Gruß aus Franken
Ortwin
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Fr 25. Okt 2024, 14:45
von Bernhard_4711
taucht
genau einmal auf: In der Datei class.session.php!
Und nach der durchgeführten Änderung des Codes in den Zeilen 84 bis 86
Code: Alles auswählen
if (in_array(session_status(), [PHP_SESSION_DISABLED, PHP_SESSION_ACTIVE])) {
return;
}
auch wieder im Error-LOG...

Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: So 27. Okt 2024, 11:08
von Bernhard_4711
Kann ich den Zustand von session_status() protokollieren, von mir aus in der errorlog.txt?
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Mo 28. Okt 2024, 08:37
von bodil
Probier es mal mit
(var_export() funktioniert so ähnlich wie var_dump(). Mit dem true als zweitem Parameter wird das Ergebnis allerdings nicht auf den Bildschirm geschrieben, sondern als String zurückgegeben. So kann man sich im Log auch Variablen anschauen, die nicht direkt als String darstellbar sind, Arrays zum Beispiel.)
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Verfasst: Di 29. Okt 2024, 14:09
von Bernhard_4711
bodil hat geschrieben: ↑Mo 28. Okt 2024, 08:37
Probier es mal mit
Das habe ich direkt vor die Zeile 84 der Datei
class.session.php gesetzt.
Das Ergebnis sieht so aus:
Code: Alles auswählen
[28-Oct-2024 12:03:35 UTC] 1
[28-Oct-2024 12:03:35 UTC] PHP Notice: session_start(): Ignoring session_start() because a session is already active (started from /var/www/btmr/contenido/classes/class.session.php on line 113) in /var/www/btmr/contenido/includes/frontend/include.front_content.php(715) : eval()'d code on line 244
, wobei die "1" durchaus öfter hintereinander ausgegeben wird.
Ich weiß somit nicht, ob das
ausgeführt wird, oder nicht.
Auch gibt es mehrere Einträge mit der Fehlermeldung hintereinander, ohne daß eine "1" ausgegeben wird.
Ich müßte die Ausgabe also differenzieren, z.B. mit einem frei belegbaren Text ("vor dem return;" oder "return; wird gleich ausgeführt") oder so.
Ginge das auch?