Sitemap leer (0kB) und Fehler/Warn bei Generierung

Hi,

Google hat mich grad angeschrieben, dass etwas mit meiner Sitemap nicht stimmt - und hat recht:
Die sitemap wird zwar erzeugt, aber ist leer. Das Ganze dürfte seit meinem Upgrade von 6.3.x auf 6.4.1.0 passiert sein. Die Sitemap aus dem Backup vor dem Upgrade hat noch Einträge. Beim Generieren kommt folgendes:

bin/console sitemap:generate -vvv
10:49:53 INFO      [app] cache-hit: context-factory-706edab409aa400e9f76e95471bdc8ed
Generating sitemaps for sales channel 706edab409aa400e9f76e95471bdc8ed (meinedomain.de) with and language 2fbb5fe2e29a4d70aa5854ce7ce3e20b...
10:49:53 WARNING   [php] Warning: file_get_contents(/tmp/706edab409aa400e9f76e95471bdc8ed-sitemap-meinedomain-de-1.xml.gz): failed to open stream: No such file or directory
[
  "exception" => ErrorException {
    #message: "Warning: file_get_contents(/tmp/706edab409aa400e9f76e95471bdc8ed-sitemap-meinedomain-de-1.xml.gz): failed to open stream: No such file or directory"
    #code: 0
    #file: "/html/shopware/vendor/shopware/core/Content/Sitemap/Service/SitemapHandle.php"
    #line: 87
    #severity: E_WARNING
    trace: {
      /html/shopware/vendor/shopware/core/Content/Sitemap/Service/SitemapHandle.php:87 { …}
      /html/shopware/vendor/shopware/core/Content/Sitemap/Service/SitemapExporter.php:162 { …}
      /html/shopware/vendor/shopware/core/Content/Sitemap/Service/SitemapExporter.php:76 { …}
      /html/shopware/vendor/shopware/core/Content/Sitemap/Commands/SitemapGenerateCommand.php:116 { …}
      /html/shopware/vendor/shopware/core/Content/Sitemap/Commands/SitemapGenerateCommand.php:102 { …}
      /html/shopware/vendor/symfony/console/Command/Command.php:256 { …}
      /html/shopware/vendor/symfony/console/Application.php:989 { …}
      /html/shopware/vendor/symfony/framework-bundle/Console/Application.php:96 { …}
      /html/shopware/vendor/symfony/console/Application.php:290 { …}
      /html/shopware/vendor/symfony/framework-bundle/Console/Application.php:82 { …}
      /html/shopware/vendor/symfony/console/Application.php:166 { …}
      /html/shopware/bin/console:70 {
        › $application = new Application($kernel->getKernel());
        › $application->run($input);
        ›
      }
    }
  }
]
done!

Gabs hier Änderungen? /tmp/ wurde von mir nicht verändert, sollte beschreibbar sein.

Schöne Grüße,
Alex

ok, das scheint ein Bug zu sein:
die finish() Funktion in vendor/shopware/core/Content/Sitemap/Service/SitemapHandle.php wird zweimal hintereinander aufgerufen. Beim 2ten Mal sind aber die Dateien aus /tmp/ bereits gelöscht, somit werden die neuen Sitemap Dateien mit leeren Content geschrieben.

Als dirty workaround habe ich nun einfach das @unlink($tmpFile); rausgenommen. Ist zwar nicht schön, aber da sich die salesChannels und die Sprachen nicht dauernd ändern dürften, bleibt hat ne Datei in /tmp/ liegen. Gibt schlimmeres.

Außerdem liefert die Funktion $this->filesystem->has($this->tmpFiles[0]) auch nix zurück. Egal ob die Datei existiert oder nicht. Hab’s aber nicht ausgiebig getestet.

Wenn das jemand auch so sieht wie ich, könnte man ja einen Bug melden.

Schöne Grüße, Alex

Hallo und danke für den Hinweis bzw. den Workarround - doch leider habe ich den nicht zum Laufen gebracht.

…aber es müsste ja auch hoffentlich so sein, dass Shopware das Problem (welche mehrere Leute betreffen dürfte?!) in der nächsten Runde fixed und die Sitemap wieder funktioniert - vielleicht kann das jemand von Shopware bestätigen?!

Viele Grüße

Moin,

leider hat die neue Version auch nicht den Fix gebracht - meine Sitemap ist immer noch leer! :frowning:

Wenn ich den Workarround von @alex999 nutze, dann wird sie zwar befüllt - Google Console lehnt sie aber ab und sag „Die Sitemap ist fehlerhaft komprimiert. Bitte komprimiere die Datei nochmals und reiche sie ein zweites Mal ein.“

Kann jemand helfen? Geht die Sitemap bei Euch auch nicht oder ist das nur ein Problem bei mir? …wobei das System neu aufgesetzt war und auch sonst nichts geändert wurde.

Danke für jede Hilfe!
Rob

Hallo, ich habe dasselbe Problem.
Shop Version 6.4.1.0.

Im Test-Shop habe ich 2 Verkaufskanäle. In einem wurde die Domain geändert, in dem anderen nicht. Wenn ich nun versuche eine Sitemap über CLI zu erstellen, funktioniert es nur für den Verkaufskanal ohne Domain Änderung. Der Andere bekommt eine leere Sitemap. Selbiges passiert beim Erzeugen über den Browser, im Modus Live.
Im produktiv Shop gibt es nur ein Verkaufskanal, bei dem die Domain geändert wurde. Dort wird aktuell nur eine leere Sitemap erzeugt, mit der obigen Fehlermeldung.

Kann das Problem etwas mit einer Domain Änderung zu tun haben, oder ist das Zufall?
Wäre es nicht auch möglich den zweiten Aufruf der finish() Funktion zu unterbinden, um das Problem zu beheben?

Hi,

ich habe auch das Problem nach dem Wechseln der Sprache und finde keine Lösung :frowning:

Ich habe das Update auf 6.4.3.1 gemacht, in der Hoffnung, dass es dann wieder läuft.

Mein Fehler lautet:
[root@haneu 15:21 httpdocs]# /opt/plesk/php/7.4/bin/php bin/console sitemap:generate -vvv
13:21:22 INFO [app] cache-hit: context-factory-79a4676bbc3b4549aeb594622671c840
Generating sitemaps for sales channel 79a4676bbc3b4549aeb594622671c840 (haneu.nl) with and language 050538d7fd9540329e5536819c3ad327…
13:21:22 WARNING [php] Warning: file_get_contents(/tmp/79a4676bbc3b4549aeb594622671c840-sitemap-www-etagenwagens-nl-1.xml.gz): failed to open stream: No such file or directory
[
„exception“ => ErrorException {
#message: „Warning: file_get_contents(/tmp/79a4676bbc3b4549aeb594622671c840-sitemap-www-etagenwagens-nl-1.xml.gz): failed to open stream: No such file or directory“
#code: 0
#file: „./vendor/shopware/core/Content/Sitemap/Service/SitemapHandle.php“
#line: 87
#severity: E_WARNING
trace: {
./vendor/shopware/core/Content/Sitemap/Service/SitemapHandle.php:87 { …}
./vendor/shopware/core/Content/Sitemap/Service/SitemapExporter.php:162 { …}
./vendor/shopware/core/Content/Sitemap/Service/SitemapExporter.php:76 { …}
./vendor/shopware/core/Content/Sitemap/Commands/SitemapGenerateCommand.php:116 { …}
./vendor/shopware/core/Content/Sitemap/Commands/SitemapGenerateCommand.php:102 { …}
./vendor/symfony/console/Command/Command.php:299 { …}
./vendor/symfony/console/Application.php:996 { …}
./vendor/symfony/framework-bundle/Console/Application.php:96 { …}
./vendor/symfony/console/Application.php:295 { …}
./vendor/symfony/framework-bundle/Console/Application.php:82 { …}
./vendor/symfony/console/Application.php:167 { …}
./bin/console:70 {
› $application = new Application($kernel->getKernel());
› $application->run($input);

}
}
}
]
done!

Hallo,

wir haben auch diesen Fehler, gleiche Shopware-Version.

Gibt es dazu evtl. schon einen Issue-Eintrag im issuetracker bei Shopware?

Gruß,
Werner.

Hey,

ja es gibt ein Issue Ticket: Shopware Issuetracker

Aktuell wäre der Workaround alle weitere Domains aus dem Verkaufskanal herauszulöschen, damit nur noch eine Domain pro Sprache vorhanden ist. Dann musst du intern mit dem Hoster eine Weiterleitung auf die verbliebende Domäne machen (bspw. die mit https://www.domainname.de).

Ich werde das das Issue Ticket aber intern nochmal versuchen zu adressieren.

LG Andre

Hi zusammen, über den folgenden Weg haben wir mit 6.4 es hinbekommen:

  1. HTTP Domain aus dem Verkaufskanal entfernt
  2. In den Sitemap einstellungen explizit den Verkaufskanal gewählt, welcher die Sitemap erhalten soll
  3. php bin/console sitemap:generate --salesChannelId HIERDIESALESCHANNELID
  4. danach hatten wir hier eine gefüllte Datei: https://saleschannel/sitemap.xml

Was ist unter dem zweiten Punkt zu verstehen? Wo wähle ich den Verkaufskanal für die Sitemap aus?
Ich habe 3 Verkaufskanäle, die jeder ihren eigene sitemap bekommen sollen.

VG

Dann lass Punkt 2 weg - das wäre im Falles eines Channels interessant.

Im Bereich Einstellung → Sitemap Dort kann man die Generierung und auch den Channel auswählen.
Versuch über die CLI direkt die Eitemap zu erstellen. Wie in Punkt 3 beschrieben.