Fehler beim Upgrade auf 6.4.1.2

Hallo, Ich habe gerade versucht meinen 6.4.1.2 Testshop auf die neuste Version zu upgraden (6.4.2.1). Leider treffe ich immer Probleme mit den Berechtigungen und jetzt stecke ich komplett fest… Beim Update aus dem UI stoppt es auf „Unpacking update file“ mit der folgenden Meldung in den Logs:

[2021-07-08T15:41:43.638840+00:00] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Filesystem\Exception\IOException: „Cannot rename „/opt/bitnami/apache/htdocs/files/update/files/vendor/shopware/recovery/Common/vendor/composer/autoload_psr4.php“ to „/opt/bitnami/apache/htdocs//vendor/shopware/recovery/Common/vendor/composer/autoload_psr4.php“.“ at /opt/bitnami/apache/htdocs/vendor/symfony/filesystem/Filesystem.php line 281 {„exception“:"[object] (Symfony\Component\Filesystem\Exception\IOException(code: 0): Cannot rename „/opt/bitnami/apache/htdocs/files/update/files/vendor/shopware/recovery/Common/vendor/composer/autoload_psr4.php“ to „/opt/bitnami/apache/htdocs//vendor/shopware/recovery/Common/vendor/composer/autoload_psr4.php“. at /opt/bitnami/apache/htdocs/vendor/symfony/filesystem/Filesystem.php:281)"}

Ich habe sogar direkt in der Konsole mit „php public/recovery/update/index.php“ versucht und dort sehe ich noch:

Replace system files…
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function Shopware\Recovery\Update\Console\Application::Shopware\Recovery\Update\Console{closure}(), 4 passed and exactly 5 expected in /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Console/Application.php:86
Stack trace:
#0 [internal function]: Shopware\Recovery\Update\Console\Application->Shopware\Recovery\Update\Console{closure}()
#1 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/knplabs/gaufrette/src/Gaufrette/Adapter/Local.php(85): rename()
#2 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/knplabs/gaufrette/src/Gaufrette/Filesystem.php(66): Gaufrette\Adapter\Local->rename()
#3 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Steps/UnpackStep.php(111): Gaufrette\Filesystem->rename()
#4 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Command/UpdateCommand.php(113): Shopware\Recovery\Update\Steps\UnpackStep->run()
#5 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Command/UpdateCommand.php(74): Shopware\Recovery\Update\Command\UpdateCommand->unpackFiles()
#6 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/symfony/console/Command/Command.php(256): Shopware\Recovery\Update\Command\UpdateCommand->execute()
#7 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(971): Symfony\Component\Console\Command\Command->run()
#8 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(290): Symfony\Component\Console\Application->doRunCommand()
#9 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(166): Symfony\Component\Console\Application->doRun()
#10 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/index.php(36): Symfony\Component\Console\Application->run()
#11 /opt/bitnami/apache/htdocs/public/recovery/update/index.php(6): require_once(’…’)
#12 {main}
thrown in /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Console/Application.php on line 86

Fatal error: Uncaught ArgumentCountError: Too few arguments to function Shopware\Recovery\Update\Console\Application::Shopware\Recovery\Update\Console{closure}(), 4 passed and exactly 5 expected in /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Console/Application.php:86
Stack trace:
#0 [internal function]: Shopware\Recovery\Update\Console\Application->Shopware\Recovery\Update\Console{closure}()
#1 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/knplabs/gaufrette/src/Gaufrette/Adapter/Local.php(85): rename()
#2 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/knplabs/gaufrette/src/Gaufrette/Filesystem.php(66): Gaufrette\Adapter\Local->rename()
#3 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Steps/UnpackStep.php(111): Gaufrette\Filesystem->rename()
#4 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Command/UpdateCommand.php(113): Shopware\Recovery\Update\Steps\UnpackStep->run()
#5 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Command/UpdateCommand.php(74): Shopware\Recovery\Update\Command\UpdateCommand->unpackFiles()
#6 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/symfony/console/Command/Command.php(256): Shopware\Recovery\Update\Command\UpdateCommand->execute()
#7 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(971): Symfony\Component\Console\Command\Command->run()
#8 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(290): Symfony\Component\Console\Application->doRunCommand()
#9 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(166): Symfony\Component\Console\Application->doRun()
#10 /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/index.php(36): Symfony\Component\Console\Application->run()
#11 /opt/bitnami/apache/htdocs/public/recovery/update/index.php(6): require_once(’…’)
#12 {main}
thrown in /opt/bitnami/apache/htdocs/vendor/shopware/recovery/Update/src/Console/Application.php on line 86

Hat jemand eine Idee wie ich es lösen kann?

Vielen Dank!
Mateusz

auch ich habe die selben Probleme. Habe Shopware schon per Mail kontaktiert aber die sagen, sie können es nicht nachstellen und es ist ihnen nicht bekannt.

Ich hab die Updateprobleme auf 6.4.2.1 aber nur, wenn ich von 6.4.2.0 aus update. Von einer älteren Version aus ging es. Ich hab das Problem bei 4 verschiedenen Shops, also ists definitiv ein Problem.

bei mir allerdings andere Fehlermeldung.

.../api/_action/update/unpack?offset=24000 Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Undefined offset: 0","meta":{"trace":[{"file":"\/usr\/www\/users\/shopware\/vendor\/shopware\/core\/Framework\/Update\/Api\/UpdateController.php","line":208,"function":"run","class":"Shopware\Core\Framework\Update\Steps\UnpackStep","type":"-\u003E","args":[24000]},{"file":"\/usr\/www\/users\/shopware\/vendor\/symfony\/http-kernel\/HttpKernel.php","line":157,"function":"unpack","class":"Shopware\Core\Framework\Update\Api\UpdateController","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{"languageIdChain":["2fbb5fe2e29a4d70aa5854ce7ce3e20b"],"versionId":"0fa91ce3e96a4bc2be4bd9ce752c3425","currencyId":"b7d2554b0ce847cd82f3ac9bd1c0dfca","currencyFactor":1,"scope":"user","ruleIds":[],"source":{},"considerInheritance":false,"taxState":"gross","rounding":{"decimals":2,"interval":0.01,"roundForNet":true,"extensions":[]},"extensions":[]}]},{"file":"\/usr\/www\/users\/shopware\/vendor\/symfony\/http-kernel\/HttpKernel.php","line":79,"function":"handleRaw","class":"Symfony\Component\HttpKernel\HttpKernel","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},1]},{"file":"\/usr\/www\/users\/shopware\/vendor\/symfony\/http-kernel\/Kernel.php","line":195,"function":"handle","class":"Symfony\Component\HttpKernel\HttpKernel","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},1,true]},{"file":"\/usr\/www\/users\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/SubRequestHandler.php","line":85,"function":"handle","class":"Symfony\Component\HttpKernel\Kernel","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},1,true]},{"file":"\/usr\/www\/users\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/HttpCache.php","line":477,"function":"handle","class":"Symfony\Component\HttpKernel\HttpCache\SubRequestHandler","type":"::","args":[{},{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},1,true]},{"file":"\/usr\/www\/users\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/HttpCache.php","line":450,"function":"forward","class":"Symfony\Component\HttpKernel\HttpCache\HttpCache","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},true]},{"file":"\/usr\/www\/users\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/HttpCache.php","line":344,"function":"fetch","class":"Symfony\Component\HttpKernel\HttpCache\HttpCache","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},true]},{"file":"\/usr\/www\/users\/shopware\/vendor\/symfony\/http-kernel\/HttpCache\/HttpCache.php","line":222,"function":"lookup","class":"Symfony\Component\HttpKernel\HttpCache\HttpCache","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},true]},{"file":"\/usr\/www\/users\/shopware\/vendor\/shopware\/core\/HttpKernel.php","line":178,"function":"handle","class":"Symfony\Component\HttpKernel\HttpCache\HttpCache","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},1,true]},{"file":"\/usr\/www\/users\/shopware\/vendor\/shopware\/core\/HttpKernel.php","line":81,"function":"doHandle","class":"Shopware\Core\HttpKernel","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},1,true]},{"file":"\/usr\/www\/users\/shopware\/public\/index.php","line":77,"function":"handle","class":"Shopware\Core\HttpKernel","type":"-\u003E","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]}],"file":"\/usr\/www\/users\/shopware\/vendor\/shopware\/core\/Framework\/Update\/Steps\/UnpackStep.php","line":63}}]} 

Probleme mit User-Berechtigungen hab ich auch (bei dem einen Shop, bei dem das Update durch ging…)
siehe Issue Shopware Issuetracker

Ich habe gerade mal von der 6.4.2.0 auf die 6.4.2.1 aktualisiert. Es gab hier keinen Fehler, entsprechend scheint der Fehler weiterhin individuell zu sein. Ggf. deaktivierst du alle Erweiterungen im Vorfeld, auch wenn als kompatibel gekennzeichnet und probierst es erneut.

Die Rechte / Rollen im Admin funktionieren auch nach dem Update.

das Problem mit dem Update passiert sogar bei einem Shop, welcher überhaupt keine Plugins hat.
Also scheinbar ist das schon ein Problem! Es immer nur auf individuelle Serverfehler oder so zu schieben finde ich etwas fragwürdig. Es liegt doch in eurer Verantwortung, dass das Update ÜBERALL funktioniert!

und nein, die Rechte/Rollen funktionieren nach dem Update definitiv NICHT. Und vorher haben sie es.
Ergo: Es gibt ein Problem beim Update

Jede Shop- und Serverumgebung ist anders, und da dieser Fehler nicht bei allen auftritt ist es auch erstmal kein allgemeiner Fehler. Nicht ohne Grund empfehlen wir Updates im Test-System durchzuführen / Backups anzulegen. Auch nach gründlichen Tests kann es immer wieder vereinzelt zu Fehlern kommen, das lässt sich niemals zu 100% ausschließen.

Warum es bei dir zu diesem Fehler kommt kann ich leider aktuell nicht sagen - ich vermute hier ein Problem in der Serverkonfiguration. Ich werde aber mal intern schauen ob es hier Ansätze gibt und melde mich dann wieder.

Hallo,
danke dass du es weiterleitest. Das mit dem Testsystem und Backups ist mir schon klar, darum gehts ja nicht. Es geht auch um keinen Fehler den das Update verursacht hat, sondern darum, dass beim Entpacken des Updates schon ein Fehler passiert… ich kann das Update also gar nicht einspielen. Und das finde ich, sollte auf jedem System möglich sein.

Wir hatten ein ähnliches Problem von 6.4.4.1 auf 6.4.5.1 (siehe auch mein Kommentar unter Update auf 6.4.1.1: Uncaught ArgumentCountError bei Cleanup)

Problem konnte nur mit Verwendung von PHP7.4 gelöst werden. Mit PHP8 hatten wir jedes Mal den Fehler:

Replace system files...
skipped...
Apply database migrations...
    0 [----->----------------------]
Apply database destructive migrations...
    0 [----->----------------------]
Cleanup old files, clearing caches...
PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function Shopware\Recovery\Update\Console\Application::Shopware\Recovery\Update\Console\{closure}(), 4 passed and exactly 5 expected in [sw-root]/vendor/shopware/recovery/Update/src/Console/Application.php:86
Stack trace:
#0 [internal function]: Shopware\Recovery\Update\Console\Application->Shopware\Recovery\Update\Console\{closure}()
#1 [sw-root]/vendor/shopware/recovery/Update/src/Cleanup.php(171): rmdir()
#2 [sw-root]/vendor/shopware/recovery/Update/src/Cleanup.php(67): Shopware\Recovery\Update\Cleanup->deleteTemporaryBackupDirectory()
#3 [sw-root]/vendor/shopware/recovery/Update/src/Command/UpdateCommand.php(184): Shopware\Recovery\Update\Cleanup->cleanup()
#4 [sw-root]/vendor/shopware/recovery/Update/src/Command/UpdateCommand.php(171): Shopware\Recovery\Update\Command\UpdateCommand->cleanupFiles()
#5 [sw-root]/vendor/shopware/recovery/Update/src/Command/UpdateCommand.php(77): Shopware\Recovery\Update\Command\UpdateCommand->cleanup()
#6 [sw-root]/vendor/shopware/recovery/Common/vendor/symfony/console/Command/Command.php(256): Shopware\Recovery\Update\Command\UpdateCommand->execute()
#7 [sw-root]/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(971): Symfony\Component\Console\Command\Command->run()
#8 [sw-root]/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(290): Symfony\Component\Console\Application->doRunCommand()
#9 [sw-root]/vendor/shopware/recovery/Common/vendor/symfony/console/Application.php(166): Symfony\Component\Console\Application->doRun()
#10 [sw-root]/vendor/shopware/recovery/Update/index.php(36): Symfony\Component\Console\Application->run()
#11 [sw-root]/public/recovery/update/index.php(6): require_once('...')
#12 {main}
  thrown in [sw-root]/vendor/shopware/recovery/Update/src/Console/Application.php on line 86

Wir hatten das Problem auch beim Update von SW 6.4.8.1 auf 6.4.8.2.
Das Update haben wir über die Konsole versucht mit dem Befehl:

php public/recovery/update/index.php

Die Konsole gab folgenden Fehler aus:
Too few arguments to function […], 4 passed in […] and exactly 5 expected in vendor/shopware/recovery/Update/src/Console/Application.php on line 86

Dass betrifft folgende Zeile:

set_error_handler(function ($errno, $errstr, $errfile, $errline, array $errcontext) {

Die Erkenntnis: Der Code ist nicht PHP8-kompatibel, denn in der PHP-Dokumentation (https://www.php.net/manual/en/function.set-error-handler.php) steht für den 5. Parameter der Callback-Function (errcontext):

This parameter has been DEPRECATED as of PHP 7.2.0, and REMOVED as of PHP 8.0.0. If your function defines this parameter without a default, an error of „too few arguments“ will be raised when it is called.

Es fehlt hier also der Default-Wert für den 5. Parameter. Zum Testen hatten wir den Parameter temporär einfach mal gesetzt, aber anschließend einen Fehler an einer anderen Stelle erhalten. Es sieht folglich so aus, als ob der Update-Prozess noch nicht PHP8-kompatibel ist.

Wir haben das Problem gelöst, indem wir in der Konsole explizit PHP 7.4 verwendet haben beim Aufruf von „php public/recovery/update/index.php“. Damit funktionierte das Update reibungslos.
Anschließend haben wir (wie in der Konsole beschrieben) den Ordner „/files/update/update-assets“ gelöscht. Leider war der Wartungsmodus danach immernoch aktiv. Auf der Seite Shopware 6 - update guides - updating shopware haben wir dann gelesen, dass außerdem noch die Datei „/files/update/update.json“ gelöscht werden muss. Nachdem das erledigt war, hat Shopware wieder funktioniert.

3 Likes

Hallo zusammen, da sich scheinbar bisher noch niemand um das Problem gekümmert hat, habe ich soeben eine Pull Request erstellt, die dieses Problem behebt. Vielen Dank an @shopware9 für das identifizieren des Problems. Hier findet ihr die Pull Request: Fix: Made error handler in the CLI-Updater PHP8 compatible by wirduzen-felix · Pull Request #2384 · shopware/platform · GitHub

2 Likes