Probleme mit dem Update (/recovery/update/index.php)

Hallo zusammen,

ich versuche bereits mehrere Male nun meinen Shopware6 Shop zu updaten.
Hierfür habe ich wie empfohlen alle Plugins deaktiviert und dann das Update über das Backend gestartet. Alle Voraussetzungen waren erfüllt.

Beim Punkt „Datenbank-Migration“ kommt es jedes Mal zu dieser Fehlermeldung:

Error

Received an error message.

URL: unpack?offset=15003&total=17150

Message:

Please try to fix this error and restart the update.

Response

{„code“:0,„message“:„The file "public/recovery/update/index.php" was not supposed to exist.“,„file“:„/srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/knplabs/gaufrette/src/Gaufrette/Filesystem.php“,„line“:63,„trace“:„#0 /srv/www/mein-shop.de/vendor/shopware/recovery/Update/src/Steps/UnpackStep.php(111): Gaufrette\Filesystem->rename()\n#1 /srv/www/mein-shop.de/vendor/shopware/recovery/Update/src/Controller/BatchController.php(100): Shopware\Recovery\Update\Steps\UnpackStep->run()\n#2 /srv/www/mein-shop.de/vendor/shopware/recovery/Update/src/app.php(97): Shopware\Recovery\Update\Controller\BatchController->unpack()\n#3 [internal function]: Closure->{closure}()\n#4 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(40): call_user_func()\n#5 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/Route.php(281): Slim\Handlers\Strategies\RequestResponse->__invoke()\n#6 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->__invoke()\n#7 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/Route.php(268): Slim\Route->callMiddlewareStack()\n#8 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/App.php(503): Slim\Route->run()\n#9 /srv/www/mein-shop.de/vendor/shopware/recovery/Update/src/app.php(72): Slim\App->__invoke()\n#10 [internal function]: Closure->{closure}()\n#11 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/DeferredCallable.php(57): call_user_func_array()\n#12 [internal function]: Slim\DeferredCallable->__invoke()\n#13 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func()\n#14 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}()\n#15 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/App.php(392): Slim\App->callMiddlewareStack()\n#16 /srv/www/mein-shop.de/vendor/shopware/recovery/Common/vendor/slim/slim/Slim/App.php(297): Slim\App->process()\n#17 /srv/www/mein-shop.de/vendor/shopware/recovery/Update/index.php(40): Slim\App->run()\n#18 /srv/www/mein-shop.de/public/recovery/update/index.php(6): require_once(‚/srv/www/mein-shop…‘)\n#19 {main}“}

Kann mir jemand sagen, woran das liegt?

Mit freundlichen Grüßen und vielen Dank im Voraus,
Dennis J.

1 „Gefällt mir“

Das Update wirst Du in einer Testumgebung einspielen? Dann würde ich einfach ein paar Tage warten.

Ich habe das gleiche Problem mit meiner Shopware 6 Installation hinter nginx. Hier meine nginx-config. Hat jemand eine Idee?

    # Handle / to index.php
    index index.php;

    # Our server name
    server_name www.example.com;

    # Should be equal to post_max_size
    client_max_body_size 128M;

    # Where the code is located
    root /var/www/public;

    # Needed for Shopware install / update
    location /recovery/install {
        index index.php;
        try_files $uri /recovery/install/index.php$is_args$args;
    }

    location /recovery/update/ {
        if (!-e $request_filename){
            rewrite . /recovery/update/index.php last;
        }
    }

    location ~* ^.+\.(?:css|cur|js|jpe?g|gif|ico|png|svg|webp|html|woff|woff2|xml)$ {
       expires 1y;
       add_header Cache-Control "public, must-revalidate, proxy-revalidate";

       access_log off;

       # The directive enables or disables messages in error_log about files not found on disk.
       log_not_found off;

       tcp_nodelay off;

       ## Set the OS file cache.
       open_file_cache max=3000 inactive=120s;
       open_file_cache_valid 45s;
       open_file_cache_min_uses 2;
       open_file_cache_errors off;
   }

   location ~* ^.+\.svg$ {
       add_header Content-Security-Policy "script-src 'none'";
   }


    # Forward any not found file to index.php. Allows to have beautiful urls like /homemade-products/
    location / {
        try_files $uri /index.php$is_args$args;
    }

    # Let php-fpm handle .php files
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi.conf;
        fastcgi_param HTTP_PROXY "";
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_read_timeout 300s;
        client_body_buffer_size 128k;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        http2_push_preload on;
    }

Müsste noch aktuell sein… Shopware 6 mit NGINX konfigurieren – The Cake Shop

Ich habe aktuell das gleiche Problem,
kann mir jemand erklären was hier nicht richtig läuft.
Die Rechte habe ich richtig gesetzt.

Error
Received an error message.
URL: unpack?offset=0&total=0
Message: Internal Server Error

Please try to fix this error and restart the update.
Response
{"code":0,"message":"The file \"public\/recovery\/update\/index.php\" was not supposed to exist.","file":"\/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/knplabs\/gaufrette\/src\/Gaufrette\/Filesystem.php","line":63,"trace":"#0 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Update\/src\/Steps\/UnpackStep.php(113): Gaufrette\\Filesystem->rename()\n#1 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Update\/src\/Controller\/BatchController.php(97): Shopware\\Recovery\\Update\\Steps\\UnpackStep->run()\n#2 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Update\/src\/app.php(97): Shopware\\Recovery\\Update\\Controller\\BatchController->unpack()\n#3 [internal function]: Closure->{closure}()\n#4 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/Handlers\/Strategies\/RequestResponse.php(40): call_user_func()\n#5 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/Route.php(281): Slim\\Handlers\\Strategies\\RequestResponse->__invoke()\n#6 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/MiddlewareAwareTrait.php(117): Slim\\Route->__invoke()\n#7 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/Route.php(268): Slim\\Route->callMiddlewareStack()\n#8 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/App.php(503): Slim\\Route->run()\n#9 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Update\/src\/app.php(72): Slim\\App->__invoke()\n#10 [internal function]: Closure->{closure}()\n#11 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/DeferredCallable.php(57): call_user_func_array()\n#12 [internal function]: Slim\\DeferredCallable->__invoke()\n#13 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/MiddlewareAwareTrait.php(70): call_user_func()\n#14 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/MiddlewareAwareTrait.php(117): Slim\\App->Slim\\{closure}()\n#15 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/App.php(392): Slim\\App->callMiddlewareStack()\n#16 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Common\/vendor\/slim\/slim\/Slim\/App.php(297): Slim\\App->process()\n#17 \/srv\/www\/shopware\/https\/vendor\/shopware\/recovery\/Update\/index.php(39): Slim\\App->run()\n#18 \/srv\/www\/shopware\/https\/public\/recovery\/update\/index.php(6): require_once('...')\n#19 {main}"}

Vermutlich lief das vorherige Update nicht durch und nun sind Update-Dateien in der Installation, die da nicht sein sollten. In dem Fall hilft ein Update über die CLI in der Regel.

Danke erstmal für deinen Tipp. Wie genau wäre die Befehlszeile über die CLI für ein aktuelles Update auf die Version 6.4.20.2? Könnte ich falls das nicht klappt auch alternativ den Fehler manuell beseitigen, indem ich die alten Dateien entferne?

Wenn du mir ein Beispiel schreiben würdest für die CLI, dann würde ich das erstmal ausprobieren :slight_smile:

Danke für diesen Hinweis, diese Seite kenne ich bereits und habe daher auch alle 3 Wege der Installation/Update-Varianten versucht ohne Erfolg. Daher habe ich gedacht, das mir jemand helfen kann das Problem manuell zu lösen. Die ganzen Maßnahmen wie Plugins deaktivieren, Systemvoraussetzungen etc. habe ich bereits berücksichtigt und trotzdem kommt es zu solch einer Fehlermeldung. Bei der 2. Updatevariante über die PHP Datei im root-Verzeichnis kam ich ein Schritt weiter, nur kam da eine andere Fehlermeldung:

{„errors“:[{„code“:„0“,„status“:„500“,„title“:„Internal Server Error“,„detail“:„[Semantical Error] The annotation \u0022@Shopware\Core\Framework\Routing\Annotation\RouteScope\u0022 in class SwagExtensionStore\Controller\DataController was never imported. Did you maybe forget to add a \u0022use\u0022 statement for this annotation? in /srv/www/shopware/https/custom/plugins/SwagExtensionStore/src/Controller/DataController.php (which is being imported from \u0022/srv/www/shopware/https/custom/plugins/SwagExtensionStore/src/Resources/config/routes.yaml\u0022). Make sure there is a loader supporting the \u0022annotation\u0022 type.“}]}

Ich lese daraus, das hier ein Eintrag zu viel oder zu wenig in der DataController.php ist im Zusammenhang mit der routes.yaml, nur was stimmt nicht? Einige im Forum schreiben es würde helfen etwas auszukommentieren oder eine Annotation-Schreibweise anzuwenden.

/custom/plugins/SwagExtensionStore/src/Controller/DataController.php
/custom/plugins/SwagExtensionStore/src/Resources/config/routes.yaml

Es wäre schön, wenn mir jemand damit helfen könnte. So wie ich gelesen habe, haben auch andere ähnliche Probleme mit dem Update von 6.4 auf 6.5.

Ihr nutzt PHP8.1? Auch während der CLI Installation?

Wieso, sollte ich etwa PHP während der CLI Installation deaktivieren? Ich weiß nicht was das ganze mit PHP zu tun hat, gibt’s evtl. einen wichtigen Parameter der in der php.ini eingestellt werden müsste? Außerdem läuft bei mir aktuell PHP8.2.

Hast du vielleicht noch eine Idee?

Die Frage war, ob nicht nur Apache/nginx, etc, sondern auch die CLI PHP 8.1 bzw. 8.2 nutzt. Das ist häufig nämlich nicht der Fall, daher die Frage. Da Annotations erst mit PHP 8.0 eingeführt wurde, wenn ich mich recht erinnere.

Ok aber wenn das der Fall ist, dürfte ich ja kein Problem mit PHP8.2 und der CLI Installation auf meinem Server haben, oder?

Kann man diese Fehler nicht manuell beheben?

Über einen Lösungsansatz wäre ich sehr dankbar.