Eine Site, die ich plötzlich verwalte (möglicherweise vor 2 Wochen - aus GA-Statistiken und erst jetzt gemeldet), hat begonnen, die Warenkorbelemente abzulegen, wenn Sie den Warenkorb anzeigen oder zur Kasse gehen.
Der obere "Mini-Warenkorb" zeigt die Artikel in der Dropdown-Liste an, bis Sie zum Warenkorb / zur Kasse navigieren und dann mit der Meldung "Es sind keine Artikel in Ihrem Warenkorb" in den Warenkorb gelangen.
Scheint ein Sitzungsproblem zu sein. Dies geschieht nicht, wenn Sie angemeldet sind.
Alle Optionen für die Sitzungsüberprüfung in "System-> Web-> Einstellungen für die Sitzungsüberprüfung" wurden entfernt und die Option "SID am Frontend verwenden" aktiviert. Dies hat das Problem gelöst, aber da sich diese Einstellungen in den letzten 3 Monaten nicht geändert haben, weiß ich, dass es ein zugrunde liegendes Problem gibt.
Dies deutet dann auf ein Problem mit der Wunde-ID hin? Irgendwie verliert die Site die Store-ID, in der sie sich befindet, und löscht die Sitzungs- / Warenkorbdaten? Vielleicht ein Beobachter / Ereignis / Umschreiben durch ein Modul.
Ich kann das Problem auf einem lokalen Entwickler oder einem UAT-Server nicht replizieren. DB auf UAT ist 2 Wochen von Live datiert, so dass dies auf ein DB-Problem / -Einstellung hinweisen könnte?
Dinge, die ich versuche: Ich bin damit beschäftigt, die aktuelle Live-Datenbank zu UAT zu ziehen, um sie auf den neuesten Stand zu bringen, um zu sehen, ob ich das Problem dort replizieren kann. wird aktualisiert, wenn das erledigt ist.
Sobald ich das Problem in einem nicht aktiven Bereich replizieren kann, deaktiviere ich Module systematisch und versuche herauszufinden, ob etwas mit den Store-IDs zu tun hat (beginnend mit MageMonkey und sweettooth, da diese vor 2 Wochen aktualisiert wurden).
Die Frage ist - was kann ich noch versuchen? Gibt es Hinweise darauf, wo ich einige Haltepunkte knacken und den Code schrittweise ändern kann, um festzustellen, ob ich dieses Problem nachverfolgen kann?
Es sind keine zusätzlichen Cache-Systeme wie Lack oder Memcache installiert. Server ist eine Standardinstallation von cpanel. Testen auf uat Ich habe den gesamten Cache deaktiviert.
weiteres Update: Es scheint, dass ich nicht reproduzieren kann, wenn ich zum Standarddesign zurückfalle. Ich verschiebe systematisch Themenüberschreibungsordner zurück.
Ich habe auch git verwendet, um den Code zurückzuverfolgen, und das Problem bleibt bei jedem Hash.
Update: Es ist schon eine Weile her, seit ich Zeit dafür hatte. Hohe Arbeitsbelastung.
Ich habe die Sitzungen auf dateibasiert verschoben und das Problem ist behoben. Da der Client in naher Zukunft nicht beabsichtigt, mehrere Server zu verwenden, und aufgrund meiner Arbeitsbelastung, wurde dies dabei belassen. Ich werde höchstwahrscheinlich später wiederkommen, um mich zu beißen.
Die Magento-Unterstützung schlug vor, dass das Problem mit dem Sweet-Tooth-Modul zusammenhängt, das die Sitzungsklassen erweitert, aber ich habe dieses Modul deaktiviert und das Problem blieb bestehen.
wird aktualisiert, wenn ich mehr Ergebnisse erhalte.
Antworten:
Auf unseren cPanel-Boxen wurden fehlende Assets auf der gesamten Magento-Seite angezeigt.
cPanel ist standardmäßig
ErrorDocument 404 /404.shtml
aber/404.shtml
nicht existiert in dem Dokument root Magento, so dass die .htaccess wieder und Umleitungen ausgeführt wird ,/404.shtml
umindex.php
(unter Verwendung von mod_rewrite).Magentos Standard-.htaccess sollte 404, 500 und andere Fehlerbehandlungsroutinen explizit angeben.
Um dieses Problem zu beheben, haben wir unserem .htaccess Folgendes hinzugefügt:
ErrorDocument 404 /errors/404.php
Wir sollten wahrscheinlich auch 500s hinzufügen:
ErrorDocument 500 /errors/500.php
quelle
Verwenden Sie Varnish auf dem Server?
Wir haben eine Reihe von Implementierungen gesehen, bei denen Leute das Cookie entfernen, BEVOR sie statischen Inhalt abrufen (images / css / js) - also wenn das image / js / css nicht existiert; Es lädt den Magento-Bootstrap und die 404-Dateien, wodurch die Cookie- und Site-Sitzung vollständig entfernt wird.
quelle
Ein Problem könnte sein, dass Magento die Sitzungsdaten beim Wechsel von HTTP zu HTTPS nicht speichert . Stellen Sie sicher, dass die erforderlichen Einstellungen für SSL usw. korrekt vorgenommen wurden.
Ein weiteres Problem könnte sein, dass der ISP des Kunden seine IP-Adresse ändert, wie hier dokumentiert .
So beheben Sie dieses Problem:
Ändern Sie die Einstellungen für die Sitzungsvalidierung in Magento Admin unter System> Konfigurationen> Web auf "Nein" mit Ausnahme von " HTTP_USER_AGENT validieren" . Wechseln Sie anschließend zu System> Cache-Verwaltung und aktualisieren Sie den Konfigurationscache, um die Änderungen zu übernehmen.
quelle
Wir haben dieses Problem beobachtet, wenn auf einer Seite ein Bild fehlt, insbesondere, wenn das Bild auf allen Seiten fehlt, z. B. in einer Kopf- oder Fußzeile. Es scheint, dass die 404-Seite, die entweder Magento oder der Webserver zurückgibt, das Frontend-Sitzungscookie unterbricht und zu einem Sitzungsverlust führt. Es ist auf unserer Liste der zu behebenden Probleme, aber die Problemumgehung besteht darin, sicherzustellen, dass keine Bilder fehlen ...
quelle
Dies kann ein Cookie- / Server-Datumsproblem sein. Als erstes sollten die Cookie-Header überprüft werden. Untersuche die Header (mit etwas wie Firebug, Charles oder Fiddler).
Sie sollten ungefähr Folgendes sehen:
Wenn der Wert für das Feld "Expires" in der Vergangenheit liegt, ist die Uhrzeit auf Ihrem Server wahrscheinlich falsch. Dies kann passieren, wenn Dienste wie ntpd nicht gestartet werden können. Wenn dies der Fall ist, überprüfen Sie die Uhrzeit auf dem Server. Wenn die Zeit abgelaufen ist, überprüfen Sie den Status von ntpd (oder des Daemon-Dienstes, um die Serverzeit auf dem neuesten Stand zu halten).
quelle
Die PHP-Garbage-Collection löscht die Sitzungen vorzeitig. Ich habe das selbst gesehen frequentierten Websites gesehen .
Einige Tipps zur Fehlerbehebung:
ls -laht [mageroot]/var/session/ | tail
- Wenn Sie keine Sitzungen haben, die länger als ein paar Wochen dauern, wird wahrscheinlich die Speicherbereinigung die Schuld tragenIch habe dies auf zwei Arten behoben:
php_value session.gc_maxlifetime 2592000
Weitere Informationen finden Sie unter: http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime
quelle
Wir hatten ein ähnliches Problem. In unserem Fall war es die Lackkonfiguration (wie Ben Lessani vorschlug). Wir haben unseren Varnish so konfiguriert, dass 404s für 120s zwischengespeichert werden, damit unsere Server nicht beschädigt werden, wenn ein 404-Fehler auf einer Seite auftritt.
Das Problem ist also, dass Magento in den 404-Jahren mit einem Set-Cookie im Header für Frontend- und Frontend_cid-Cookies geantwortet hat, das die Kundensitzung zurücksetzt.
Unsere Lösung für dieses Problem besteht darin, alle Set-Cookies für 404 Antworten zu entfernen.
quelle
Dumme Dinge, die in der Vergangenheit PHP-Sitzungen für mich unterbrochen haben und eine Überprüfung wert sein könnten:
quelle