Fehlermeldung "session_start(): Ignoring session_start()"
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Fehlermeldung "session_start(): Ignoring session_start()"
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?
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?
---
Munterbleiben... Bernhard
Munterbleiben... Bernhard
-
- Beiträge: 3213
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 16 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
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
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:
Code: Alles auswählen
if (isset($_SESSION)) {
session_start();
}
Lange Rede kurzer Sinn:
Es ist ein Hinweis und kein Fehler, du kannst das auch ignorieren.
Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Hallo Murat,

das wollte ich lesen! Vielen Dank dafür.

---
Munterbleiben... Bernhard
Munterbleiben... Bernhard
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
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.
---
Munterbleiben... Bernhard
Munterbleiben... Bernhard
-
- Beiträge: 3213
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 16 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Eigentlich sollte das nicht sein, da das in class.session.php schon in Zeile 84 - 86 geprüft wird: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.
Code: Alles auswählen
if (isset($_SESSION)) {
return;
}
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.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
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...
Code: Alles auswählen
return;
Code: Alles auswählen
session_start();
...und, schwupp, kommen wieder diese Meldungen wegen bereits gestarteter Session...

---
Munterbleiben... Bernhard
Munterbleiben... Bernhard
-
- Beiträge: 3213
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 16 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
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:
Ich erstelle mal ein Ticket in GitHub dazu. Danke dir für den Hinweis.
Nachtrag:
Das Ticket #508 dazu im Github.
Besser wäre es, wenn man die Stelle
Code: Alles auswählen
if (isset($_SESSION)) {
return;
}
Code: Alles auswählen
if (in_array(session_status(), [PHP_SESSION_DISABLED, PHP_SESSION_ACTIVE])) {
return;
}
Nachtrag:
Das Ticket #508 dazu im Github.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
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.
Code: Alles auswählen
session_start()
Ich habe die Zeilen 84-86 mal wie von Dir vorgeschlagen geändert und werde das beobachten.
---
Munterbleiben... Bernhard
Munterbleiben... Bernhard
-
- Beiträge: 3213
- Registriert: Do 21. Okt 2004, 11:08
- Wohnort: Augsburg
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 16 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
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.Bernhard_4711 hat geschrieben: ↑Do 24. Okt 2024, 12:13 Und was ist mit dem Aufruf vonin class.session.php?Code: Alles auswählen
session_start()
Ich habe die Zeilen 84-86 mal wie von Dir vorgeschlagen geändert und werde das beobachten.
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;
}
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.
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Wie kann ich das ermitteln?
Ok, habe ich geändert.Hinweis:
Den Codeschnipsel in meiner vorherigen Antwort habe ich korrigiert, die war falsch.

---
Munterbleiben... Bernhard
Munterbleiben... Bernhard
-
- Beiträge: 4316
- Registriert: Do 30. Jun 2005, 22:56
- Wohnort: Eltmann, Unterfranken, Bayern
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Servus,
Gruß aus Franken
Ortwin
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
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Code: Alles auswählen
session_start
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;
}

---
Munterbleiben... Bernhard
Munterbleiben... Bernhard
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Kann ich den Zustand von session_status() protokollieren, von mir aus in der errorlog.txt?
---
Munterbleiben... Bernhard
Munterbleiben... Bernhard
-
- Beiträge: 372
- Registriert: Fr 7. Okt 2011, 04:10
- Hat sich bedankt: 2 Mal
- Danksagung erhalten: 7 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
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.)
Code: Alles auswählen
error_log(var_export( session_status(), true));
-
- Beiträge: 155
- Registriert: Do 25. Jul 2019, 16:08
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 4 Mal
- Kontaktdaten:
Re: Fehlermeldung "session_start(): Ignoring session_start()"
Das habe ich direkt vor die Zeile 84 der Datei class.session.php gesetzt.bodil hat geschrieben: ↑Mo 28. Okt 2024, 08:37 Probier es mal mitCode: Alles auswählen
error_log(var_export( session_status(), true));
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
Ich weiß somit nicht, ob das
Code: Alles auswählen
return;
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?
---
Munterbleiben... Bernhard
Munterbleiben... Bernhard