Der Ursprung ist definitiv aus mehreren Faktoren zusammengesetzt, die Sache mit PayPal Plus mag das eine sein, allerdings hat einer der massiv betroffenen Live-Shops das PayPal Plus nicht installiert und crasht leider massiv. Die Shops sind so nicht weiter zu betreiben - mit der aktuellen Release macht ein betroffener Shop nur noch 3% seines regulären Umsatzes und die Telefone klingeln heiß. Also, hier besteht mehr als Handlungsbedarf. Zu den Fakten:
PHP 7.0.18 unter nginx nginx 1.10.1, ACPu 5.1.8 und ZendCache an, DB unter mysqlnd 5.0.12-dev.
Im Moment hilft nur das Deaktivieren des Caches und somit des Produktivmodus, denn mit Cache kann ich alle hier bereits genannten Aussagen mit ja unterstreichen.
Zum Entstehen des Fehlers, besser noch: der Fehler:
Der Shopbetreiberin ist nach dem Update auf 5.3.3 sehr früh aufgefallen, dass die Lagerbestände nichtmehr richtig laufen und über API (Amazon und real) importierte Bestellungen nichtmehr in Statistiken auftauchen bzw. einen fehlerhaften Bestand produzieren. Da die Bestände nicht kleiner 0 werden dürfen, kam es massiv zu Überverkäufen (Artikel auf Bestellung via $order rein, Bestellung abgefertigt und weil die Artikel dann auf den Marktplätzen nichtmehr verfügbar waren gab es viele Order direkt im Shop - aber wenn Du nur 10 Stück von dem Ding hast, dann ist es schwer, 15 Stück zu liefern).
Der Fehler ist heute noch nachvollziehbar, da die Artikelstatistiken nach wie vor falsch laufen. Wir haben sodann die Entwickler der verschiedenen Plugins kontaktiert. Zuerst die Amazon-Anbindung, Bestellung kommt via API rein, es gibt einen Event ExternalOrder_… und hier scheint der erste Fehler zu passieren und in einem falschen Bestand zu resultieren, bzw. in einem Fehler der Artikelstatistiken (vielleicht ist auch hier der Fehler), wir haben sodann den Entwickler eines Plugins für Lagerbestandsprotokollierung eingeschalten, da hier die Bestände wiederrum anders falsch liefen als jene im Stock selbst. Die Betreiberin konnte (bedingt duch gewissenhafte Lagerstandshaltung mit Papier und Stift) die Fehler definieren. Der Entwickler hat uns vor wenigen Tagen darauf hingewiesen, dass wir wohl einen Bug im Core gefunden haben. Aber wir glauben an unsere Mädels und Jungs in Schöppingen (und das schon seit Shopware 3.5 - nur nützt uns das nichts, denn das Spiel geht weiter.
Bei Warenbeständen mit 0 crasht der Shop. Der Abgleich des Bestandes passt wohl nicht (der ja eigentlich nicht gecasht werden soll) und es gibt den Fehler oder es liegt daran, dass man sich mit der Benachrichtigungsfunktion den Fehler ins Haus holt. Ich denke eher Punkt 1. Und hier ist unser Ansatz: Verkäufe oder Manipulationen am Bestand der Artikel werden falsch in der DB bzw. im Cache verankert, bei dem Trigger, dass ein anderer Kunde, eine andere IP den Artikel aufrufen/kaufen will und ja der Wert auf ArticleStock ausgegeben werden muss, schiesst sich Smarty ab, denn welche Menge sollst Du denn nun darstellen? Da wäre der unknown Tag S :).
Diesen Workaround könnte man in einer Staging-Umgebung niemals darstellen. Seltsam: Das Ganze funktioniert aber, solange man den Cache deaktiviert. Hier unsere 2. These: Es Teil der Stocks werden mitgecasht oder nicht richtig freigehalten. Würde auch zum Problem mit den Zahlungsplugins passen, denn wenn Du von PayPal wieder zurück kommst, müsste der Artikel nen anderen Bestand bekommen - hm, ist hier evtl. der Bug? Wir wissens nicht.
Da war doch noch was - eine nette Fehlermeldung beim Versuch das Plugin für die Bestandsprotokollierung zu entfernen und hier könnte man auch fündig werden:
A new entity was found through the relationship ‘Shopware\Models\User\Rule#resource’ that was not configured to cascade persist operations for entity: Shopware\Models\User\Resource@00000000192cc5b30000000036ee4dc5. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(…,cascade={“persist”}). If you cannot find out which entity causes the problem implement ‘Shopware\Models\User\Resource#__toString()’ to get a clue.
Nachvollziehbare auffällige Symptome seit Bestehen des Fehlers in mehreren Shopinstallationen unter gleichen Servervariablen:
-
Das Backend ist teilweise nichtmehr nutzbar, sieht aus ein Grafikfehler Seitenaufbau katastrophal trotz perfomanter Hardware. Diese Problematik resultiert aus dem eingeführtem Feature, damit permanent gecheckt wird, was die Benutzer im Backend so treiben und sich nicht in die Quere kommen. Es gab dazu hier schon einen Thread sowie ein Ticket welches abgelehnt wurde. Aber der Fehler ist zu 100% parallel mit dem Problem zum Produktivsystem im Frontend
-
Das Plugin Backend Bestellung (sogar als Update in der aktuellen Version) verursacht den Fehler bei Produktivsystem ad hoc. Also Im Backend Bestellung anlegen über einen Artikel. Der Artikel wird 5 Minuten später im Frontend aufgerufen: Shop ist platt. Na, ist es vielleicht doch der Bestand? Oder ein anderer Controller?
-
Andere im Forum aufgetauchte Fehler kann ich reproduzieren, indem eben z.B. die Smartys nicht ganz richtig in dem einen oder anderen Plugin aufgerufen werden, meistens sind es |rewrite: und solche Sachen, aber auch ein append an eine index.tpl (wurde hier auch genannt, schiesst den Shop ab - das ist aber nicht das eigentliche Problem)
-
Mit Cache aber hält länger durch: Das Deaktivieren der template_security in der Config.php sorgt somit für ein gefühltes längeres Leben des Shops. Damit umgeht man aber nur die eben angesprochenen klassischen Fehler und Schreibweisen - ich glaube nicht, dass das responsive oder bare theme keinen append oder prepend mehr hat (nur ein kleiner Wink mit dem Zaunpfahl)
-
Oder ganz ganz ganz was andere: Das Problem resultiert evtl. auch schon aus einerer früheren Geschichte - in einer anderen Installation gab es seit dem Sicherheitsupdate 5.2.25 ziemlich ähnliche Probleme im Handling - evtl. wurde hier etwas übersehen? Das war dann schon Ende Juni?
Ich habe auf Github gesehen, dass sich die letzten Commits mit der API befassen und überlege ernsthaft, einen der Live-Shops mit der Git-Version zu betreiben, schlimmer kann es für die Shopinstallationen fast nichtmehr werden und wir müssen entweder auf ein gutes Weihnachtsgeschäft hoffen oder ein paar Leute suchen sich neue Jobs.
Jedenfalls auch seltsam: in einem 5.2er Shop, der seit Juli unangetastet ist, tauchen seit 6. Oktober 2017 CSRF Fehler auf - gab es am 6ten Oktober irgendwas, was die Welt wissen muss? Ab wann sind eigentlich die ersten unknown S aufgetaucht? Frohe Fehlersuche, ich hoffe, ich konnte helfen - wir sind selbst am Verzweifeln