Überall 404 / fehlende Bilder aus dem Nichts...

Guten Morgen,

nachdem ich mich auf Druck des Kunden dazu bewegen ließ, den im Kern einigermaßen funktionierenden Shop live zu nehmen und seine SW5-Version abzulösen, schien vorgestern am ersten Tag alles so funktionieren, dass es erstmal ok sei. Nach 2 Tagen Livegang kommt plötzlich der Obergau: gestern fiel mir auf, dass lauter 404s auftauchen und die Bilder nicht mehr an ihren Orten im Cache-Ordner gefunden werden. Ich bat meinen IT-Kollegen, die Seite auch mal anzusurfen, aber bei dem sah erstmal alles gut aus. Also dachte ich mir, greif ich nach dem heiligen Gral von Shopware 6 und lösche mal wieder den Cache, und zwar wie immer und der Erfahrung nach einzig wirkungsvoll, auf Linux Prompt-Ebene und forcefullem rm -rf * im Cache-Ordner. Auf den ersten Blick schien das Problem behoben.

Allerdings stehe ich heute an meinem freien Tag auf und sehe, dass plötzlich noch mehr Bilder als gestern einen 404 schmeißen. Also hab ich es wieder so versucht, leider ohne Wirkung dieses Mal. Dateiberechtigungen werden jedes Mal überprüft, um das Problem auszuschließen… Ich bin mit meinem Latein am Ende. 

Hat jemand ne Lösung/nen Tipp für mich, was ich machen kann, damit sich das Problem permanent erledigt? In der mehrmonatigen Entwicklungsphase hat sich das Problem so nie gezeigt, auch wenn ich schon immer das Gefühl hatte, dass mit dem Caching-Mechanismus irgendwas nicht stimmt…

Vielen Dank für die Aufmerksamkeit

Martin

Nachtrag: Offensichtlich handelt es sich um dieselbe Problematik, bei der mir an anderer Stelle (https://forum.shopware.com/discussion/70820/mediendatenbank-reindizieren/p1) nicht ausreichend geholfen wurde. Ich sehe in der Medienbibliothek schon wieder haufenweise kaputte Bilder/Icons, man kann getrost davon ausgehen, dass es die fehlenden Bilder im Frontend sind.

Bezieht endlich mal Stellung zu diesem Problem. Das kann echt nicht wahr sein, wie hier mit uns Kunden umgegangen wird…

@MartinSerdar schrieb:

Bezieht endlich mal Stellung zu diesem Problem. Das kann echt nicht wahr sein, wie hier mit uns Kunden umgegangen wird…

Wozu soll man da Stellung beziehen? In diesem und auch in deinem anderen Thread steht quasi nichts drin, was bei der Eingrenzung deines Problemes helfen würde. Anscheinend hast du das Problem, dass bei dir Bilder verschwinden. Also musst du jetzt erstmal herausfinden welcher Prozess das Problem verursacht - da gibt es ja haufenweise mögliche Fehlerquellen.

  • Automatische Importe per API

  • Scheduled Tasks die regelmäßig ausgeführt werden

  • Handlungen im Admin

Systematisch müsste man also mal schauen welche Bilder es betrifft, was bspw. die Produte gemeinsam haben um eine regelmäßigkeit abzuleiten. Mit dem was hier und in deinem anderen Thread steht, kann ich (und alle anderen) nur raten. Also aktuell hab ich keine Ahnung warum deine Bilder verschwinden. Bei der eingrenzung kann bsw. helfen nachzuvollziehen ab welchem Zeitpunkt ein 404 aufgetreten ist (bspw. über die .htaccess) um dann zu schauen was bspw. vorher an der jeweiligen Entität durch welchen Prozess geändert wurde. 

1 „Gefällt mir“

Hallo Moritz, 

danke dir für eine ausführliche Antwort. 

Ich kann dir gerne sagen, was ich getan habe: Gar nix! Ich nutze die Backendfunktionen im Adminpanel wie sie angeboten werden und lade stinknormal Bilder hoch, die erst da sind und nach einer Zeit ohne Zutun verschwinden. Fremd-Plugins, die da reinfunken, sind auch nicht vorhanden. Bzgl. der htaccess gibt es zusätzlich zum Standardshopware-Eintrag, den ich nicht anfasse, nur ein paar stinknormale 301-Redirects der alten URLs auf die neue, die nicht im Geringsten mit den kryptischen Ordner-Namen, die das Kacksystem erstellt, zu tun haben.

Es gibt keine API-Anbindungen, die Scheduled Task sollten von sich aus die Dinge verbessern und nicht zerschießen und mit denen will ich gar nichts zu tun haben, weil ich euren Code nicht kenne und die Wartung - wie du selber sagst - automatisiert und vor allem korrekt laufen soll! Ich hab den Server nach eurer Anleitung mit allen Anforderungen ausgestattet, 2 Tage lang war alles ok, jetzt ist von selbst alles Scheiße geworden. Zumal ich sogar in dieser Zeit gar nichts an Bildern hinzugefügt habe, weil ich mich noch mit etlichen anderen Problemen rumschlagen muss, wie z.B. dem Nichtanlegenkönnen von manuellen Bestellungen oder nicht funktionierender DHL-Etikettenbestellung, obwohl die Konfiguration des Moduls sowohl Zugangsdaten verifiziert als auch korrekt die Kundendaten ausliest.

Ich hab auch echt keinen Plan mehr, was ich noch machen soll. Ich kann das Ding nicht einfach im Dev-Modus laufen lassen und in Prod gibt es zu wenig Infos teilweise, um irgendwas nachzuvollziehen. Ich bin immer noch der Meinung, dass der Migrationsassistent nicht korrekt arbeitet, wenn ihr der Meinung seid, dass mit einem sauberen Neubeginn sowas nicht auftaucht. Dann ist es ein Armutszeugnis, dass nicht mal die Migration von 5 auf 6 ordentlich abgeht. Ich musste zum Beispiel schon in ner DB-Spalte bei den Produkten einen Wert von „0“ auf „NULL“ setzen, damit die wieder in den Warenkorb gelegt werden konnten oder auch die letzte Ziffer eines Nummernkreises in der DB editieren, damit eine Kontinuität der Rechnungsnummern zum alten Shop wiederhergestellt wird. Das sind alles Dinge, die einfach nur schlecht programmiert wurden… 

Ich sammel mal die Errorlogs und poste die gleich mal… 

Ein exemplarischer Eintrag aus %shopwaredir%/var/log/prod_%datum%.log:

[2020-09-11 12:38:06] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: “No route found for “GET /theme/3f95216e7c94b093f931598f5a206a7c/css/component/box” (from “https://torrefaktum.de/")" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 {“exception”:”[object] (Symfony\Component\HttpKernel\Exception\NotFoundHttpException(code: 0): No route found for “GET /theme/3f95216e7c94b093f931598f5a206a7c/css/component/box” (from “https://torrefaktum.de/”) at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php:136, Symfony\Component\Routing\Exception\ResourceNotFoundException(code: 0): No routes found for “/theme/3f95216e7c94b093f931598f5a206a7c/css/component/box/”. at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:70)”}

Der Fehler ist verständlich: Er findet die Datei nicht. Was geändert in der Medienbibliothek habe ich nicht, ich fummel da auch nicht in der DB rum. Welches Kommando kann ich denn ausführen, um die Medienbibliothek korrekt aufzubauen? Wieso verschwinden einfach Bilder? Das macht überhaupt keinen Sinn!

Benutz mal bitte den Code-Formatter

Ich kann die kaputten Einträge ja nicht mal mehr weglöschen und wenn dann irgendein interner Worker darüber geht - z.B. media:generate-thumbnails - dann wird mit Fehlermeldung abgebrochen, weil ein Bild nicht mehr an seinem kryptischen Ort ist. Ich kann mir gut vorstellen, dass das jetzige Phänomen auch damit was zu tun hat, aber selbst das mühsame Abarbeiten und das Kopieren einer entsprechend benannten Bilddatei an den Ort hilft nicht weiter. Was soll ich da bitte schön denn machen? Ich werd den Teufel tun, in der Codebase von SW selbst rumzufummeln. Ich bereue es so sehr, mich auf eine Migration eingelassen zu haben. Ich hab das Gefühl, ihr habt euer Produkt nicht im Griff und wenn man nicht bei jedem Release alles neu aufbaut, geht mit einer aus der Migrations befüllten Installation gar nichts richtig… Ihr seid jetzt bei 6.3.1 und der Stand ist wie Pre-Alpha 6.0.0.0.000001…

Schitte bön… 

[2020-09-11 12:38:06] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /theme/3f95216e7c94b093f931598f5a206a7c/css/component/box" (from "https://torrefaktum.de/")" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /theme/3f95216e7c94b093f931598f5a206a7c/css/component/box\" (from \"https://torrefaktum.de/\") at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php:136, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): No routes found for \"/theme/3f95216e7c94b093f931598f5a206a7c/css/component/box/\". at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:70)"} []

 

Ooops, Component Box… der bekannte Fehler. Hab wohl die falsche von den 1000 Meldungen genommen… hier nochmal eine Bild-bezogene:

[2020-09-11 10:58:18] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /66/ec/0b/1585738412/torrefaktum_logo_main.png" (from "https://torrefaktum.de/seminare/")" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /66/ec/0b/1585738412/torrefaktum_logo_main.png\" (from \"https://torrefaktum.de/seminare/\") at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php:136, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): No routes found for \"/66/ec/0b/1585738412/torrefaktum_logo_main.png/\". at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:70)"} []

 

Zeitweise kann ich selbst als root nicht mal den Inhalt des cache-Ordners löschen. Normal ist das alles nicht…

Die Fehlermeldung ist ja nicht wirklich ein Anhaltspunkt, da die nur sagt, dass das Bild nicht mehr gefunden wird.

Vergleich doch mal im Accesslog die Zeit zwischen dem letzten 200 und 404 und schau, was dazwischen auf dem Server so alles passiert ist. Kann ja sein, dass da im Core irgendwas passiert, aber ohne zu wissen, was da alles abgelaufen ist, wird dir auch keiner helfen können.

Um das zu korrigiern wirst du nicht drum herum kommen das Bild neu hochzuladen an den jeweiligen Ort oder halt mti der “Ersetzen” Funktion versuchen das Bild auf dem Server zu erstezen (keine Ahnung ob das funktioniert, wenn das Bild nicht mehr da ist). 

Danke für die Antwort. Ich kann dir jetzt schon versichern, dass das Ersetzen nicht geht, hatte ich damals schon versucht. Den anderen Rat werde ich mal befolgen und dann melde ich mich nochmal!

Ich sehe gerade sogar, dass selbst “Standarddateien” nicht gefunden werden vom CompiledURLMatcher, z.B. die sitemap.xml oder robots.txt:

[2020-09-10 01:22:34] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /robots.txt"" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /robots.txt\" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php:136, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): No routes found for \"/robots.txt/\". at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:70)"} []
[2020-09-10 01:23:58] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /sitemap_index.xml"" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /sitemap_index.xml\" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php:136, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): No routes found for \"/sitemap_index.xml/\". at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:70)"} []

Außerdem versucht das System noch ganz viele alten Routen aus dem SW5-Shop anzusteuern, obwohl ich die Produkte nach der ersten Migration immer außen vor ließ, um die SEO-Optimierung voranzutreiben und plausiblere URLs zu erhalten: 

[2020-09-10 00:54:59] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /bio/bio-shop/333/espresso-decaf-swiss-water"" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /bio/bio-shop/333/espresso-decaf-swiss-water\" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php:136, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): No routes found for \"/bio/bio-shop/333/espresso-decaf-swiss-water/\". at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:70)"} []
[2020-09-10 01:01:26] request.ERROR: Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /filterkaffee/328/filterkaffee-decaf-swiss-water"" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php line 136 {"exception":"[object] (Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException(code: 0): No route found for \"GET /filterkaffee/328/filterkaffee-decaf-swiss-water\" at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/http-kernel/EventListener/RouterListener.php:136, Symfony\\Component\\Routing\\Exception\\ResourceNotFoundException(code: 0): No routes found for \"/filterkaffee/328/filterkaffee-decaf-swiss-water/\". at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/symfony/routing/Matcher/Dumper/CompiledUrlMatcherTrait.php:70)"} []

Hinzu kommen dann solche Meldungen, bei denen das Produkt nicht gefunden wird, obwohl auf der Seite immerhin die Produktbilder und Seiten eigentlich noch laufen: 

[2020-09-10 15:22:26] request.ERROR: Uncaught PHP Exception Shopware\Core\Content\Product\Exception\ProductNotFoundException: "Product for id c6329449e076452d89b11e5f50581efb not found." at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/shopware/storefront/Page/Product/ProductLoader.php line 91 {"exception":"[object] (Shopware\\Core\\Content\\Product\\Exception\\ProductNotFoundException(code: 0): Product for id c6329449e076452d89b11e5f50581efb not found. at /var/www/torrefaktum.de/live/sw6-torrefaktum/vendor/shopware/storefront/Page/Product/ProductLoader.php:91)"} []

Ich hoffe, mein Kunde bezahlt die Pro-Lizenz zeitnah, damit ich von euch Support aus erster Hand erhalte… Ich kann in den 3 Tagen Logs (3 Logs, insg. 7 MB groß) keinen einzigen Eintrag finden, wo ein erfolgreicher Aufruf mitprotokolliert wurde, aber ich kann versichern, dass es bzgl. der Bilder über gute 2 Tage ohne 404s lief und das Phänomen ohne Änderungen auftritt.

Ach ja… jetzt schaue ich nochmal in den %SWROOT%/media-Ordner und hab genau 1 Verzeichnis mit Unterverzeichnissen dort. Ich kann mich erinnern, dass das mal deutlich mehr waren. Ich hab den Ordner aber nie angefasst seit Relaunch bzw. seitdem es ging! WWWWWWWWTTTTTTTFFFFFFFFFFF!

Also alte URLs die aufgerufen werden, sind ja völlig in Ordnung. Die würdest du ja eh am besten über die .htaccess auf die aktuelle URL umleiten. Das macht ja durchaus Sinn. Eine robots.txt könntest du selbst anlegen, wenn du hier Dateien/Pfade ausschließen willst. 

Hallo Max,

danke, den anderen Thread dazu hatte ich schon gesehen. Aber da der box-Fehler keine Auswirkungen hat, ignoriere ich den einfach bis das von Seiten Shopware gefixt wurde. Ein Ticket wurde ja schon dazu erstellt, wie ich gesehen hatte.

Mir geht es in erster Linie um die Behebung der kaputten Bilder!

Hallo nochmal! Problem scheint sich unerwarteterweise zu erledigen… Ich hatte den Server laut den Requirements hier: Shopware 6: System Requirements entsprechend aufgesetzt und auch die PHP Extensions laut Liste eingebunden. 

Das DHL Etikettenproblem, das ich nebenbei anmerkte, gab mir gestern einen Fehler bzgl. fehlender SOAP-Funktionalität. Die SOAP-Extension ist in der Doku aber nicht aufgeführt. Als heute das DHL-Plugin im Shop als Update aufpoppte und ich es versucht habe, wollte es ohne diese Extension erst gar nicht anspringen. Nach Installation der Extension flutschte das Plugin durch. Um vorzubeugen habe ich nun fast alle PHP Extensions aktiviert und irrwitzigerweise kann ich nun auch kaputte Bilder einfach neu hochladen und ersetzen, was vorher auch nie funktionierte.

Danke für eure Unterstützung und „Bitte, gern geschehen“ für den Hinweis zur Ergänzung eurer Doku! :wink:

Herzliche Grüße

Martin

Zu früh gefreut… das Bilderproblem ist wieder aufgetaucht…

Fehlt das Bild denn dann auch im Shop? Also da wo es angezeigt werden sollte? Oder hast du nur die Log Einträge?

Im Backend wird es NOCH korrekt angezeigt… Im Frontend fehlt’s wieder wie ursprünglich das Problem war. Mir ist aufgefallen, dass der Erfolg des Bildersatzuploads auch daran hängt, wie ich es versuche. Nutze ich den dicken Hochladen-Button oben in der Biblio erkennt er gleiche Dateinamen und ich kann’s einfach ersetzen, Thumbnail kommt korrekt von totem X auf Bild. Nutze ich Rechtsklick -> Ersetzen und wähle die gleichnamige Datei, fragt er nach der gewünschten Aktion, aber der AJAX-Request beim Klick auf den Button macht nix (schätze Fehlermeldung IRGENDWO) und auch ein Klick auf das X zum Schließen des Dialogs hat keine Wirkung mehr. Ich bleib im Modal hängen und muss die Seite reloaden, um davon wieder wegzukommen… Aber das ist ja nur ein Symptom und keine Ursache. 

Ferner besteht das Problem, dass nach hartem Löschen des Caches auf Prompt-Ebene einfach ein 500er vom Server kommt, weil der Cache-Ordner sporadisch dem root statt www-data zugeordnet wird, was auch gar keinen Sinn macht. Ich erstelle keine Ordner manuell oder sonstwie, dass das Begründen könnte.

Ich wundere mich auch, dass es sich um genau dieselben Bilder wie vorhin handelt, weshalb ich davon ausgehe, dass irgendein Worker mit genau diesen Bilder ein Problem hat - wieso auch immer. Denn die wurden auch nur stinknormal hochgeladen wie die anderen… Mir ist langsam auch ein Rätsel, in welchen Log ich schauen muss, um diesbezügliche Fehlerprotokolle zu finden. 

Kannst du mir sonst auch nochmal das Kommando geben, um bei Prod debug anzumachen? Ich finde nirgends eine komplette Doku zu den Console-Befehlen und ihren Parametern.

Vielen Dank für deine anhaltende Hilfe. 

Als Root nicht mal den Ordner komplett löschen zu können, das ist auch schon sehr bedenklich und bemerkenswert:

rm: cannot remove 'prod_h11fe163706d41a88fc42c3ac31dd83bd/pools/9oEYfOnugS': Directory not empty