Updates über das Backend funktionieren bei mir i.d.R. nicht (hier gibt es immer viele Fehlermeldungen bzgl. nicht vorhandener Zugriffsrechte, etc.), so dass ich die „normalen“ Updates immer über die Konsole und Browser durchgeführt habe.
Für das Update auf 6.5.0.0 steht diesmal aber keine Zip-Datei zur Verfügung, sondern nur eine „shopware-installer.phar.php“.
Wohin kopiere ich die Datei und wie starte ich das Update?
Ok, mittlerweile habe ich herausgefunden, dass man die Update-Datei „shopware-installer.phar.php“ wohl ins Verzeichnis „public“ hochladen und dann mit https://domain.de/shopware-installer.phar.php aufrufen muss.
Die Prüfung der PHP-Version lief noch sauber durch, aber dann wurde folgende Fehlermeldung ausgegeben:
„Warning: file_put_contents(/var/www/vhosts/domain.de/httpdocs/composer.json): Failed to open stream: Permission denied“
Ich habe dann die Rechte für die Datei composer.json von 0644 in 0755 geändert und die Installation erneut aufgerufen.
Als nächstes wurde folgende Fehlermeldung ausgegeben:
„Could not open input file: /var/www/vhosts/domain.de/httpdocs/bin/console“
Das Verzeichnis console ist im genannten Pfad gar nicht vorhanden.
Sowohl das Front-, als auch das Backend sind nun nicht mehr erreichbar. „Internal Server Error 500“.
Lässt sich da noch was retten, oder spiele ich die Sicherung des Vhosts wieder ein?
Wie ist denn das Update korrekt auszuführen, ohne so einen Totalausfall?
Die Datei darf nicht in /public liegen, sondern muss im Shopware Hauptverzeichnis liegen (bei Dir also direkt unter httpdocs). Zum Aufruf danach das Einstiegsverzeichnis (Document Root) von httpdocs/public auf httpdocs ändern. Anschließend https://domain.de/shopware-installer.phar.php aufrufen.
Nachdem alles heruntergeladen wurde wirst Du aufgefordert, den Document Root wieder auf public zu setzen (bei Dir also httpdocs/public) - dann kannst Du mit der Installation fortfahren.
Vorab aber noch eine Frage.
Muss ich zuvor die Rechte für die Datei composer.json von 0644 in 0755 ändern, oder kam die Fehlermeldung nur, weil ich die Installation falsch angegangen bin?
An den Rechten sollte das nicht gelegen haben - die „console“ als Abhängigkeit wurde nicht gefunden. Da ggfs. Teile der Installation durchgeführt wurden in der falschen Verzeichnisebene solltest Du vor dem nächsten Versuch evtl. zunächst das Backup einspielen.
Ich hatte vorab bereits einen Restore des Vhosts durchgeführt.
Erst als ich beim erneuten Installtionsversuch die Rechte der Datei composer.json auf 0777 geändert habe (0755 war nicht ausreichend), ging es weiter, aber dann folgte folgende Fehlermeldung:
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run composer update or composer update .
Required package „shopware/administration“ is in the lock file as „6.4.20.2“ but that does not satisfy your constraint „~6.5.0“.
Required package „shopware/core“ is in the lock file as „6.4.20.2“ but that does not satisfy your constraint „~6.5.0“.
Required package „shopware/elasticsearch“ is in the lock file as „6.4.20.2“ but that does not satisfy your constraint „~6.5.0“.
Required package „shopware/storefront“ is in the lock file as „6.4.20.2“ but that does not satisfy your constraint „~6.5.0“.
Required package „symfony/flex“ is not present in the lock file.
Required package „symfony/runtime“ is not present in the lock file.
This usually happens when composer files are incorrectly merged or the composer.json file is manually edited.
Read more about correctly resolving merge conflicts Resolving merge conflicts - Composer
and prefer using the „require“ command over editing the composer.json file directly Command-line interface / Commands - Composer
Die Datei composer.json hat nach der erfolglosen Installation folgenden Inhalt:
Ja, die steht auf 0644. Habe ich jetzt auch mal in 0777 geändert.
Musss ich beide Dateien nach der Installation wieder auf 0644 zurücksetzen?
Ich erhalte beim Herunterladen aber weiterhin die Fehlermeldung:
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run composer update or composer update .
Required package „shopware/administration“ is in the lock file as „6.4.20.2“ but that does not satisfy your constraint „~6.5.0“.
Required package „shopware/core“ is in the lock file as „6.4.20.2“ but that does not satisfy your constraint „~6.5.0“.
Required package „shopware/elasticsearch“ is in the lock file as „6.4.20.2“ but that does not satisfy your constraint „~6.5.0“.
Required package „shopware/storefront“ is in the lock file as „6.4.20.2“ but that does not satisfy your constraint „~6.5.0“.
Required package „symfony/flex“ is not present in the lock file.
Required package „symfony/runtime“ is not present in the lock file.
This usually happens when composer files are incorrectly merged or the composer.json file is manually edited.
Read more about correctly resolving merge conflicts Resolving merge conflicts - Composer
and prefer using the „require“ command over editing the composer.json file directly Command-line interface / Commands - Composer
Auf 0777 würde ich sie jedenfalls nicht lassen, es scheint so das dein Webserver nicht die richtigen Rechte hat. Dazu kann ich aber nichts weiteres sagen, da ich dein System nicht kenne. Im Zweifel mal beim Hoster anfragen.
Ok, dann muss ich mal mit der Agentur Rücksprache halten, die mir das System eingereichtet hat.
Wahrscheinlich sind die Rechte auch das Problem dafür, dass ich bisher keine einziges Update über das Backend einspielen konnte.
Weil jetzt leider wieder alles Platt ist, mache ich zuerst nochmals einen restore des Vhosts.
In den Dateizugriffsrechten wurden jetzt alle Angaben für Eigentümer und Gruppe geändert.
Danach lief die Installation sauber durch, sogar über das Backend.
Das Backend läuft auch fehlerfrei und ich habe nur die Erweiterungen wieder aktiviert, für die eine Update zur Verfügung stand.
Leider ist das Frontend nun nicht mehr erreichbar.
Es wird folgende Fehlermeldung im Browser angezeigt:
"ERR_TOO_MANY_REDIRECTS "
Wie kann ich das noch beheben?
In Plesk habe ich schon die HTTPS Umleitung deaktiviert, aber daran lag es nicht.
Ist der Shop im Wartungsmodus wird mir beim Aufruf des Frontends die Wartungsseite angezeigt.
Erst dann, wenn ich im Backend meine IP-Adresse in der Whitelist angebe wird mir beim erneuten Aufruf des Frontends die Fehlermeldung „ERR_TOO_MANY_REDIRECTS“ angezeigt.
Du musst wahrscheinlich die Konfiguration des vHosts anpassen - ist public der Webroot, stimmen die htaccess-Dateien oder die ngnix-Konfigurationsdatei?
Der für den Server zuständige Support hat mir gerade mitgeteilt, das serverseitig alles korrekt konfiguriert ist und auch keine Fehlermeldungen vorliegen.
Ich schaue mir jetzt zum 100 mal die Konfiguration im Backend an.
Irgend etwas muss das Update doch verändert haben.
Es wurden einige Zeilen in der zugeweisenen Theme-Ableitung (custom/plugins/Theme-Ableitung /src/Resources/views/storefront/layout/breadcrumb.html.twig) auskommentiert, welche wohl nicht mehr mit der neuesten SW6 Version kompatibel sind.
Ich ging eigentlich davon aus, dass bei einem Update sowohl das Shopware-Standard-Theme, als auch alle Ableitungen mit angepasst werden. Da habe ich mich wohl geirrt, oder in meinem Shop ist irgend etwas anders.
woher soll denn Shopware oder irgendjemand wissen, was du in deiner Ableitung (im Bestfall updatesicher) angepasst hast? Das kann doch schon von der Logik her nicht automatisch mit geändert werden - auch weil das ja am Ende auch gar nicht gewünscht sein kann, da es ja eventuell bewusst umgeändert wurde.
Das (Standard-) Storefront - Theme von Shopware wird dagegen automatisch „aktualisiert“, da darin ja gar keine Änderungen gemacht werden dürfen.
Shopware hat in der offiziellen Dokumentation expliziet angegeben dass die Datei in den /public Ordner muss…
Da du nun schreibst diese darf nicht in den /public Ordner (was ich dir auch glaube dass es so funktioniert) Frage ich mich warum Shopware sowas schreibt und auch nicht korrigiert.