Update auf Shopware 6.5 bricht ab

Hallo,

unser Shop (Version 6.4.20.2), soll auf Version 6.5 aktualisiert werden. Es sind alle Plugins deaktiviert und das Shopware Standard Theme gesetzt.

Das Core-Update bricht mit folgender Fehlermeldung ab:

Run Update preparations
Composer could not detect the root package (shopware/production) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version
Loading composer repositories with package information
Updating dependencies
Dependency resolution completed in 0.001 seconds
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires shopware/administration 6.5.0.0 -> satisfiable by shopware/administration[6.5.0.0].
    - shopware/administration 6.5.0.0 requires php ~8.1.0 || ~8.2.0 -> your php version (7.4.3; overridden via config.platform, actual: 8.2.22) does not satisfy that requirement.
  Problem 2
    - Root composer.json requires shopware/core 6.5.0.0 -> satisfiable by shopware/core[6.5.0.0].
    - shopware/core 6.5.0.0 requires php ~8.1.0 || ~8.2.0 -> your php version (7.4.3; overridden via config.platform, actual: 8.2.22) does not satisfy that requirement.
  Problem 3
    - Root composer.json requires shopware/elasticsearch 6.5.0.0 -> satisfiable by shopware/elasticsearch[6.5.0.0].
    - shopware/elasticsearch 6.5.0.0 requires php ~8.1.0 || ~8.2.0 -> your php version (7.4.3; overridden via config.platform, actual: 8.2.22) does not satisfy that requirement.
  Problem 4
    - Root composer.json requires shopware/storefront 6.5.0.0 -> satisfiable by shopware/storefront[6.5.0.0].
    - shopware/storefront 6.5.0.0 requires php ~8.1.0 || ~8.2.0 -> your php version (7.4.3; overridden via config.platform, actual: 8.2.22) does not satisfy that requirement.
  Problem 5
    - shopware/conflicts 0.1.22 requires shopware/core * -> satisfiable by shopware/core[6.5.0.0].
    - shopware/conflicts 0.2.0 requires shopware/core >=6.6.4.0 -> found shopware/core[v6.6.4.0, v6.6.4.1, v6.6.5.0, v6.6.5.1] but it conflicts with your root composer.json require (6.5.0.0).
    - shopware/core 6.5.0.0 requires php ~8.1.0 || ~8.2.0 -> your php version (7.4.3; overridden via config.platform, actual: 8.2.22) does not satisfy that requirement.
    - Root composer.json requires shopware/conflicts >=0.1.22 -> satisfiable by shopware/conflicts[0.1.22, 0.2.0].

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions.

Kann mir jemand einen Hinweis geben, wo es da klemmt? Das mit php-Version 7.4.3 ist merkwürdig, weil PHP Version 8.2. für die Domain gesetzt ist.

Vermute, die PHP Version muss auch für Composer bzw für die CLI gesetzt werden.

Danke. Macht man das im Hosting, oder in der Shop-Konfiguration?

Hallo,

habe gerade folgenden Eintrag in der composer.json gefunden:

"config": {
        "optimize-autoloader": true,
        "platform": {
            "php": "7.4.3"
        },
        "sort-packages": true,
        "allow-plugins": {
            "composer/package-versions-deprecated": true
        }
    },

Könnte das der Grund für den Abbruch sein? Normalerweise steht so ein Eintrag nicht in der composer.json, zumindest nicht bei den Shops, die ich bisher gesehen habe? Was könnte der Hintergrund für diesen Eintrag gewesen sein?

Hallo,

den obigen Eintrag aus der composer.json zu löschen, hat zwar den konkreten Fehler beseitigt, führt aber zu neuen, anderen Fehlermeldungen. Es scheint so, als wenn die composer.json prinzipiell der Haken ist? Sie sieht so aus:

{
    "name": "shopware/production",
    "type": "project",
    "license": "MIT",
    "config": {
        "optimize-autoloader": true,
        "platform": {
            "php": "7.4.3"
        },
        "sort-packages": true,
        "allow-plugins": {
            "composer/package-versions-deprecated": true
        }
    },
    "prefer-stable": true,
    "minimum-stability": "stable",
    "scripts": {
        "pre-install-cmd": [
            "[ ! -f vendor/autoload.php ] || $PHP_BINARY bin/console system:update:prepare"
        ],
        "pre-update-cmd": [
            "[ ! -f vendor/autoload.php ] || $PHP_BINARY bin/console system:update:prepare"
        ],
        "post-install-cmd": [
            "@composer install --working-dir vendor/shopware/recovery --no-interaction --no-scripts",
            "@composer install --working-dir=vendor/shopware/recovery/Common --no-interaction --optimize-autoloader --no-suggest",
            "[ ! -f vendor/autoload.php ] || $PHP_BINARY bin/console system:update:finish"
        ],
        "post-update-cmd": [
            "@composer install --working-dir vendor/shopware/recovery --no-interaction --no-scripts",
            "@composer install --working-dir=vendor/shopware/recovery/Common --no-interaction --optimize-autoloader --no-suggest",
            "[ ! -f vendor/autoload.php ] || $PHP_BINARY bin/console system:update:finish"
        ]
    },
    "autoload": {
        "psr-4": {
            "Shopware\\Production\\": "src/"
        }
    },
    "repositories": [
        {
            "type": "path",
            "url": "custom/plugins/*/packages/*",
            "options": {
                "symlink": true
            }
        },
        {
            "type": "path",
            "url": "custom/static-plugins/*",
            "options": {
                "symlink": true
            }
        }
    ],
    "require": {
        "php": "^7.4.3 || ^8.0",
        "composer-runtime-api": "^2.0",
        "shopware/administration": "~v6.4.0",
        "shopware/core": "~v6.4.0",
        "shopware/elasticsearch": "~v6.4.0",
        "shopware/recovery": "~v6.4.0",
        "shopware/storefront": "~v6.4.0"
    },
    "require-dev": {
        "ext-openssl": "*",
        "ext-tokenizer": "*",
        "ext-xmlwriter": "*",
        "defuse/php-encryption": "~2.2.1",
        "dms/phpunit-arraysubset-asserts": "^0.2.1",
        "fakerphp/faker": "~1.14.1",
        "johnkary/phpunit-speedtrap": "~3.3.0",
        "league/flysystem-memory": "~1.0.2",
        "maltyxx/images-generator": "~1.0.0",
        "mbezhanov/faker-provider-collection": "~2.0.1",
        "nikic/php-parser": "~4.13.2",
        "opis/json-schema": "~1.0.19",
        "phpunit/php-code-coverage": "~9.2.14",
        "phpunit/phpunit": "~9.5.17",
        "smalot/pdfparser": "~0.14.0",
        "symfony/browser-kit": "~4.4 || ~5.2.3 || ~5.3.0 || ~5.4.0",
        "symfony/dependency-injection": "~4.4 || ~5.2.3 || ~5.3.0 || ~5.4.0",
        "symfony/css-selector": "^5.3",
        "symfony/dom-crawler": "~4.4 || ~5.2.3 || ~5.3.0 || ~5.4.0",
        "symfony/phpunit-bridge": "~4.4 || ~5.2.3 || ~5.3.0 || ~5.4.0",
        "symfony/stopwatch": "~4.4 || ~5.2.3 || ~5.3.0 || ~5.4.0",
        "symfony/var-dumper": "~4.4 || ~5.2.3 || ~5.3.0 || ~5.4.0",
        "symfony/web-profiler-bundle": "~4.4 || ~5.2.3 || ~5.3.0 || ~5.4.0"
    }
}

Gibt es eine Art „Standard“ für den Inhalt von composer.json, für das Update von 6.4.20.2 auf 6.5.0.0, mit dem man das Update mal testen könnte.

Hallo,

ich habe unter https://raw.githubusercontent.com/shopware/production/6.4.20.2/composer.json nachgeschaut und diese composer.json sieht genauso aus.

Irgendwie gehen mir langsam die Ideen aus. Hat jemand noch einen Hinweis für mich?

Zu 100% sicher, dass Version 8.2 auch aktiv ist? https://wpengine.com/resources/how-to-check-php-version/#Run_a_PHP_File_DIY

Nutzt auch composer selbst die PHP Version?
https://stackoverflow.com/questions/42974099/tell-composer-which-php-version-to-use

Bitte NICHT in den Dateien experimentieren, außer es wird irgendwo explizit als Lösungsansatz vorgeschlagen. Das Problem ist der Server und die aktive PHP Version, nicht das Shopsystem.

Hallo @Moorleiche,

danke für den Hinweis. Das php 8.2 für die Domäne aktiv ist, bin ich wirklich sicher.

Wie kann ich herausbekommen, welche Version composer nutzt, bzw. wie muss ich das Update starten, damit die richtige php version dann auch genommen wird?

Ich habe in meiner letzten Antwort noch zwei Links hinterlegt. Ich würde das Beispiel aus dem ersten Link trotzdem einmal Testen für die Gewissheit.
Die PHP Version von composer wird wahrscheinlich nicht über die Domain gesetzt, sondern über die CLI. Da ist evtl eine Anpassung von COMPOSER_HOME in der .env notwendig. Ist jedoch bei jedem Hosting Anbieter unterschiedlich, am besten da einmal nachfragen.

Danke. Habe gerade herausgefunden, das die php version im Verzeichnis /opt/plesk/php/8.2/bin liegt.

Wie muss ich das Update dann starten? Bisher habe ich es aus dem Backend heraus gestartet. Geht dass in diesem Fall überhaupt?

Laut diesem Link, kann man in der composer.json den Wert von „platform“ auf die aktuelle PHP Version ändern (Anstatt der Wert zu löschen)
https://stackoverflow.com/questions/50117254/composer-plesk-encountering-php-version-difficulties

https://getcomposer.org/doc/06-config.md#platform

Hallo @Moorleiche,

danke Dir, für den Hinweis. Das werde ich gleich testen. Ich hatte vorhin den Eintrag gelöscht, was nicht funktioniert hat.

Hallo @Moorleiche,

ich habe jetzt die php version 8.2.23, wie beschrieben, in die composer.json eingetragen. Beim Start des Updates, über Backend, passiert nun eigentlich das gleiche, als wenn ich den Eintrag löschen würde. Das Update klappt nicht und bringt folgende Fehlermeldung:

Protokoll
Run Update preparations
Composer could not detect the root package (shopware/production) version, defaulting to '1.0.0'. See https://getcomposer.org/root-version
Loading composer repositories with package information
Updating dependencies
Dependency resolution completed in 0.000 seconds
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires shopware/core 6.5.0.0 -> satisfiable by shopware/core[6.5.0.0].
    - shopware/core 6.5.0.0 requires league/flysystem-memory ~3.10 -> found league/flysystem-memory[3.10.3, 3.13.0, 3.15.0, 3.16.0, 3.18.0, 3.19.0, 3.23.1, 3.24.0, 3.25.1, 3.28.0] but it conflicts with your root composer.json require (~1.0.2).
  Problem 2
    - Root composer.json requires shopware/storefront 6.5.0.0 -> satisfiable by shopware/storefront[6.5.0.0].
    - shopware/storefront 6.5.0.0 requires symfony/dependency-injection ~6.2.0 -> found symfony/dependency-injection[v6.2.0, v6.2.1, v6.2.2, v6.2.3, v6.2.5, v6.2.6, v6.2.7, v6.2.8, v6.2.10, v6.2.11, v6.2.12, v6.2.13] but it conflicts with your root composer.json require (~4.4 || ~5.2.3 || ~5.3.0 || ~5.4.0).
  Problem 3
    - shopware/core 6.5.0.0 requires league/flysystem-memory ~3.10 -> found league/flysystem-memory[3.10.3, 3.13.0, 3.15.0, 3.16.0, 3.18.0, 3.19.0, 3.23.1, 3.24.0, 3.25.1, 3.28.0] but it conflicts with your root composer.json require (~1.0.2).
    - shopware/elasticsearch 6.5.0.0 requires shopware/core v6.5.0.0 -> satisfiable by shopware/core[6.5.0.0].
    - Root composer.json requires shopware/elasticsearch 6.5.0.0 -> satisfiable by shopware/elasticsearch[6.5.0.0].

Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals

Hallo,

Ich vermute mal, dass der platform Eintrag in der composer.json die installierte php version überschreibt und der ursprüngliche Wert ‚7.4.3‘ bei Shopware 6.5 zu einem Fehler führt. Offenbar ist es also egal, ob der platform Eintrag nun mit 8.2.23 gesetzt wird, oder komplett weggelassen wird, weil dann die aktuell installierte Version genommen wird. Das erscheint logisch.

Im Endeffekt stört sich dass Update nun an anderen Dingen, die ich nicht wirklich einordnen kann. Was ist ‚league/flysystem-memory‘ ? Habe ich bisher noch nicht gehört. Ist aber scheinbar Bestandteil der originalen composer.json von Shopware 6.4.20.2 ???

Wenn man sich die Fehlermeldung genau ansieht, könnte man hier einige Rückschlüsse ziehen.

Wie in diesem Problem beschrieben, würde ich in der composer.json „flysystem-memory ~1.0.2“ durch „flysystem-memory ~3.10“ ersetzen usw.

Es gibt dazu auch noch zahlreiche Themen im Forum.

So schaut die composer.json by the way in Shopware 6.5 aus. Anstatt die Version zu ändern, kann man die auch ggf einfach entfernen.

{
  "license": "proprietary",
  "type": "project",
  "require":
  {
    "composer-runtime-api": "^2.0",
    "fakerphp/faker": "^1.23",
    "maltyxx/images-generator": "^1.0",
    "mbezhanov/faker-provider-collection": "^2.0",
    "shopware/administration": "6.5.8.7",
    "shopware/core": "6.5.8.7",
    "shopware/elasticsearch": "6.5.8.7",
    "shopware/storefront": "6.5.8.7",
    "symfony/flex": "~2"
  },
  "repositories":
  [
    {
      "type": "path",
      "url": "custom/plugins/*",
      "options":
      {
        "symlink": true
      }
    },
    {
      "type": "path",
      "url": "custom/plugins/*/packages/*",
      "options":
      {
        "symlink": true
      }
    },
    {
      "type": "path",
      "url": "custom/static-plugins/*",
      "options":
      {
        "symlink": true
      }
    }
  ],
  "minimum-stability": "stable",
  "prefer-stable": true,
  "config":
  {
    "allow-plugins":
    {
      "symfony/flex": true,
      "symfony/runtime": true
    },
    "optimize-autoloader": true,
    "sort-packages": true
  },
  "scripts":
  {
    "auto-scripts": {
      "assets:install": "symfony-cmd"
    },
    "post-install-cmd":
    [
      "@auto-scripts"
    ],
    "post-update-cmd":
    [
      "@auto-scripts"
    ]
  },
  "extra":
  {
    "symfony":
    {
      "allow-contrib": true,
      "endpoint":
      [
        "https://raw.githubusercontent.com/shopware/recipes/flex/main/index.json",
        "flex://defaults"
      ]
    }
  }
}

Hallo @Moorleiche,

prima, vielen Dank für Deine Hinweise! Das werde ich mir morgen gleich nochmal genauer anschauen. Irgendwie muss ich den Shop diese Woche noch aktualisiert bekommen :wink:.

Hallo @Moorleiche,

danke nochmal für Deine Hinweise, aber es bleibt leider erfolglos. Wenn ich die einzelnen Versionshinweise in der composer.json korrigiere kommen weitere/andere Fehler. Irgendwie verheddert sich das System immer wieder in irgendwelchen Abhängigkeiten und führt das Update einfach nicht aus.

An dieser Stelle weiß ich nun wirklich nicht weiter. Es handelt es sich hier sogar um eine Professional Edition - Silver-Subscription, die jährlich erhebliche Kosten verursacht. Wenn man nun noch berücksichtigt, was in der Vergangenheit sonst noch für Kosten in das System geflossen sind, kann man eigentlich nicht in Erwägung ziehen, den Shop aufzugeben.

Es muss doch irgendeine Lösung geben! Ich bin für jeden Hinweis dankbar, was man in dieser verfahrenen Situation noch machen kann.

Würde die Fehler step-by-step beseitigen, es sollte ja auch mal Licht am Ende des Tunnels sein.

In diesem Beitrag, scheint die Ausgangssituation ähnlich zu sein.

Es gibt auch die Möglichkeit das über die SSH Console abzuwickeln, da kann man composer noch einige flags mitgeben um Fehler zu ignorieren.

Leider ist das Thema „Update auf 6.5“ auch schon seit zwei Jahren überfällig, wir sind nun schon bei Shopware 6.6 und es beschäftigt sich kaum noch jemand mit 6.5.

Hallo @Moorleiche,

danke, ich muss mal sehen, ob ich ggfs. Shopware noch mit einbinde. Ist ja eine Prof. Edition. Vielleicht können die ja noch was dazu sagen, auch wenn meine Hoffnung da eher gering ist :roll_eyes:.

Das beseitigen der Fehler habe ich step-by-step probiert. Am Ende kamen dann plötzlich Fehler, wo ich gar nicht mehr wußte, was ich machen soll und da half auch nur noch das Einspielen der Backups.

Ja, das Update auf 6.5 ist natürlich längst überfällig, aber funktionieren sollte es doch trotzdem noch? Ich habe mal eine frische 4.6.20.2 via Docker angeschaut und die composer.json ist identisch. Mal sehen, ob ich mit dieser Frickelei noch zum Erfolg komme :grimacing:.