Oxid Shop 4.5 und PHP 7 Session Fehler

Hallo liebe Community,

zunächst einmal vielen Dank für die vielen tollen Beiträge und Hinweise zu Oxid 4 und PHP 7 :o) Mit diesen ist es gelungen, dass eine Oxid 4.5 Installation unter PHP 7.3 funktioniert.

Allerdings müssen dazu in der .htaccess per “php_value display_errors Off” die Fehlermeldungen abgeschaltet werden, da ein letzter Fehler, sofern er angezeigt wird, die Funktionalität beeinträchtigt, d.h. der Wechsel zwischen angemeldetem Benutzer / abgemeldetem Benutzer funktioniert nicht richtig und der Shop verliert die Info, dass ein Benutzer angemeldet bzw. abgemeldet ist.

Die Meldung lautet:
Warning: session_id(): Cannot change session id when session is active in /www/htdocs/x_x/il/core/oxsession.php on line 937

einhergehend mit
Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/x_x/il/core/oxsession.php:937) in /www/htdocs/jentztst/il/core/oxutilsserver.php on line 114

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/x_x/il/core/oxsession.php:937) in /www/htdocs/jentztst/il/core/oxutils.php on line 1127

Hat jemand vielleicht eine Idee, wie ich diesen Fehler noch beseitigen kann?

Danke im voraus!

Diese Shopversion ist so alt, dass sie in ein paar Monaten legal Bier trinken, in einigen Ländern heiraten und in USA einen Waffenschein machen dürfte.
Und dann ist das nicht mal die “neuste” verfügbare 4.5er Version, sondern eine der ersten.

Ich würde gerne sagen, dass ein Shop Upgrade diesen Fehler beseitigen würde :smiley:
Aber das wird es vermutlich nicht, weil in der aktuellen Version auch der gleiche Code vorhanden ist.
Hier im Forum gibts noch ein paar andere Posts mit der selben Fehlermeldung und da wird erwähnt, dass es nur die PHP Version 7.3 betrifft. Google liefert ebenfals ein paar Suchegebnisse für “session_id(): Cannot change session id when session is active”, die den Zusammenhang mit der PHP Version 7.3 bestätigen.

Schalte mal auf PHP 7.2 um, das dürfte die Warnung nicht mehr auslösen.

Ha, ha, ha, da hast Du völlig recht, die Installation ist ein wirklich “altes Schätzchen” :o)

Das Oxid 4.5 ist auf B2B-Anfragen umgebogen und wird eigentlich mehr als CMS genutzt - seit bald zwei Jahren ist in der Diskussion, die Webseite komplett neu zu gestalten. Nun aber soll PHP 5.6 abgeschaltet werden und PHP 7.1 / 7.2 gleich mit, insofern sind diese Versionen leider keine Option.

Tante “Google” hatte ich zu dem Thema “Warning: session_id()” auch bereits bemüht, aber nichts zielführendes gefunden - ich hatte die Hoffnung, dass einer vielleicht eine passende Lösung parat hat ;o)

Da seitens des Kunden die Neugestaltung der Webseite wieder in den Fokus rückt, handelt es sich um einen Überbrückungszeitraum von ein paar Monaten… im Zweifelsfall dann eben mit ausgeschaltetem “error_reporting”, da damit die Seite funktioniert :o)

hmm, Dein Kunde bezeichnet sich selbst als den top kompetenten und professionellen Partner für Ecommerce und dann hostet er auf einem Shared Hosting ohne jeglicher Kontrolle über PHP Versionen? :smiley: oh je

Ich habe mir durchaus die Fixes in anderen Systemen angeschaut, aber zielführend war es wirklich nicht.
Wir haben hier prinzipiell 2 Probleme:

  • session id kann nicht geändert werden
  • die Fehlermeldung, die dabei entsteht, verursacht “headers already sent” Fehler.

Ich hätte gedacht, dass die “Headers already sent” Fehlermeldung nur dann kommt, wenn etwas in HTML ausgegeben wird, d.h. “dispaly_error” aktiv ist.
D.h. die Fehler könnten durchaus erfasst werden, dürfen nur nicht auf der Webseite ausgegeben werden.

  • error_reporting 12345-was-auch-immer
  • display_startup_errors 0
  • display_errors 0

Oder kommen die Fehler auch bei ausgeschaltetem display_errors?
Man könnte auch warnings deaktivieren.

Woher weißt Du ? ;o)

Das ist richtig, die Fehler kommen nur bei eingeschaltetem “display_errors” - ist das ausgeschaltet, verhält sich die Seite wie unter PHP 5.6 und alles funktioniert normal.

Ich weiß, wer der Kunde ist :smiley:

Ich wollte in der ursprünglichen Antwort darauf hinweiswen, dass es einige bekannte Sicherheitsprobleme gibt, durch die man mit sehr wenig Aufwand Admin Zugang erlangen und den Shop übernhemen könnte. Aber da Dein Kunde die Registrierungen erst manuell bestätigt und nicht jeden in den Shop reinlässt, habe ich es weggelassen.
Aber wenn wir schon darüber reden: lege bitte trotzdem ein htaccess Passwortschutz in den admin Ordner.

Für meinen Geschmack gehören die Fehlermeldungen überhaupt nicht ins Frontend sondern sollten in den Log geschrieben werden. Das ist zwar bequem beim debuggen aber jede noch so kleine Information ist möglicherweise eine zu viel im Angriffsszenario. Und das was Marat sagt: Admin dicht machen :wink:

Danke für den Tipp, ist gleich umgesetzt :o)

1 Like