Installation DHL Shipping-Extension für Magento 2 mit Composer

Vor einiger Zeit hat uns ein Supportkunde kontaktiert, weil er Schwierigkeiten hatte, eine Magento-Extension zu installieren. Er nutzte Magento 2 und wollte die DHL Shipping-Extension einrichten. In Magento 2 ist Composer dafür der empfohlene Weg. Wie die Extension-Installation genau abläuft, steht in unserer Readme. Bei der Installation auf dem Kundensystem zeigte sich aber ein Problem, nämlich:

composer require dhl/shipping-m2
[InvalidArgumentException]
Package dhl/module-carrier-paket at version 2.5.0 has a PHP requirement incompatible with your PHP version (8.1.2)

Die Meldung ist recht eindeutig: Die PHP-Version auf dem System passt nicht zu den Anforderungen unserer DHL-Extension.

Die benötigte PHP-Version ist nicht direkt in der composer.json des Meta-Packages definiert, sondern (u. a.) im Package dhl/module-carrier-paket, das auch in der Fehlermeldung genannt ist. Dessen composer.json offenbart:

"require": {
        "php": "^7.1.3",

PHP 8 ist offensichtlich nicht erlaubt, sondern nur PHP 7.x. (siehe Doku von Composer). Der Kunde teilte mir aber mit, dass er PHP 7.2 in seinem Projekt nutzt und er nicht versteht, woher die Version 8.1.2 in der Fehlermeldung kommt. Er hat sich seine PHP-Version im Browser anzeigen lassen.

Warum klappt also die Installation trotz scheinbar passender PHP-Version nicht?

Ursache

Die PHP-Version auf der Kommandozeile (CLI) muss nicht zwingend identisch mit der Version sein, die der Webserver (Apache, nginx) nutzt. Mit anderen Worten: was man hiermit auf der CLI sieht

php -v

kann durchaus davon abweichen, was man im Browser angezeigt bekommt, wenn man das hier macht:

<?php
  phpinfo();
?>

Beim Kunden war genau das der Fall: Der Apache-Webserver nutzte PHP 7.2, aber auf der CLI war die PHP-Version 8.1.2. Und da Composer im Kontext der CLI läuft, sah dieser die (unpassende) Version 8.1.2 und verweigerte verständlicherweise die Installation der DHL-Extension.

Lösung #1

Will man die Default-PHP-Version nicht umstellen, kann man im CLI-Befehl den absoluten Pfad zur Executable angeben – sofern denn mehrere PHP-Executables gleichzeitig auf dem System installiert sind:

/usr/bin/php7.2 composer require dhl/shipping-m2

Für die Composer-Installation funktioniert das aber nur, wenn in der composer.json keine post-install-cmd Einträge enthalten sind wie z. B.:

"post-install-cmd": [
  "php <some command>",
  "php <some other command>"
],

In diesen Commands fehlt die explizite Angabe der PHP-Version wieder, also können diese Befehle schiefgehen, weil die Default-PHP-Version nicht passt..

Lösung #2

Soll standardmäßig immer eine bestimmte PHP-Version für die CLI verwendet werden, ist die Umstellung des Symlinks zur Executable möglich. Je nach Systemkonfiguration kann das z.B. so aussehen:

/usr/bin/php -> /usr/bin/php7.2

Oder auf Debian bzw. Ubuntu auch so:

/usr/bin/php -> /etc/alternatives/php
/etc/alternatives/php -> /usr/bin/php7.2

Gibt man nur php auf der Kommandozeile ein, wird dem Symlink /usr/bin/php gefolgt, wodurch man am Ende bei der Executable für PHP 7.2 landet.

Wenn man nicht weiß, welche Executable bzw. welcher Symlink angesprochen wird, hilft:

which php

Damit wird der Pfad angezeigt, der aufgerufen wird, wenn das Kommando benutzt wird.

Es gibt natürlich noch weitere Lösungsmöglichkeiten, aber der Einfachheit halber beschränke ich mich hier auf die zwei genannten.

Der Kunde konnte sein Problem übrigens damit lösen, noch etwas zu warten, bis wir die Version 2.6.0 der DHL-Shipping-Extension veröffentlicht hatten. Die ist nämlich standardmäßig mit PHP 8.1 kompatibel.


Sie möchten einen Rundum-Support, mit dem Sie langfristig zufrieden sind und der Ihre Probleme zeitnah löst? Dann lernen Sie uns kennen und kontaktieren Sie noch heute unseren Head of Operations Tobias Hein.

Artikel teilen:
Verwandte Themen
Magento

Neueste Beiträge

Von Caroline Kuhn

Neue Kooperation mit EVACO: BI-Plattform wird Teil von ERP2ORO

Mit EVACO arbeiten wir im Zuge der von Prodatic und uns konzipierten Lösung ERP2ORO, bei der wir als…

Weiterlesen
Content-Erstellung für Redakteure leicht gemacht, TYPO3 Cowriter-Extension
Von Thomas Wilhelm
Content-Erstellung leicht gemacht: ChatGPT Extension für TYPO3

Online-Redaktionen stehen häufig vor der Aufgabe, sehr viele Texte liefern zu müssen. Künstliche…

Weiterlesen
Neujahrs-Glühen 2023 bei Netresearch im Hof
Von Caroline Kuhn
Netresearch Neujahrs-Glühen 2023 mit unseren Kunden & Partnern

Wir haben am 23.01. ab 16 Uhr das neue Jahr wieder traditionell mit unserem Neujahrs-Glühen mit…

Weiterlesen
B2B Komplettlösung ERP2ORO
Von Caroline Kuhn
ERP2ORO: Die B2B-Komplettlösung

Fünf Systeme - eine Lösung. Das verspricht die von Prodatic konzipierte Lösung ERP2ORO - ein smarter…

Weiterlesen