Magento 2.1.1 ist nicht kompatibel mit PHP 7.1.0

14

Ich habe einen neuen Server mit PHP v7.1.0RC3installiert. Laut DevDocs ist Magento 2 kompatibel mit 7.0.2 up to 7.1.0, except for 7.0.5dem PHP 7.1.0M2 aber wenn ich versuche repo zu installieren bekomme ich folgenden Fehler:

Aufgabe 1 - Installationsanforderung für magento / product-community-edition 2.1.1 -> Erfüllbar durch magento / product-community-edition [2.1.1]. - magento / product-community-edition 2.1.1 benötigt php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> Ihre PHP-Version (7.1.0RC3) erfüllt diese Anforderung nicht.

Devtype
quelle

Antworten:

23

Update - September 2017:

Magento 2.2 unterstützt jetzt offiziell PHP 7.1. Das ist also die Magento-Version, die Sie von nun an an anstreben sollten, wenn PHP 7.1 etwas ist, das Sie auf Ihrer Plattform wollen oder brauchen.


Original - Oktober 2016:

Ich frage mich eigentlich, ob die DevDocs-Dokumentation ein Fehler ist und vielleicht PHP 7.0.10 statt 7.1.0 gemeint ist, was für mich sinnvoller wäre.

Abgesehen davon denke ich, dass Magento 2.1.1 mit PHP 7.1 kompatibel sein könnte. Wenn Sie es testen möchten, fügen Sie einfach diesen zusätzlichen Parameter zu Ihren Composer-Befehlen hinzu, um Composer anzuweisen, die PHP-Versionsprüfung vorerst zu ignorieren:

composer install --ignore-platform-reqs

Aktualisieren:

Nachdem ein Problem bei Github aufgetreten ist, wurde die Anforderungsbeschreibung jetzt aktualisiert, um zu berücksichtigen, dass PHP 7.1 derzeit nicht unterstützt wird. Die Beschreibung war in der Tat ein Tippfehler.

TiEul
quelle
Es sah eher wie ein Komponistenproblem aus, wie fschmengler unten vorschlug, aber es sind wieder die irreführenden Entwicklerdokumente. Herabgestuft auf PHP Version 7.0.11 und Bingo.
Devtype
9

Es gibt zwei Möglichkeiten:

  1. Die devdocs sind falsch und PHP 7.1 wird nicht unterstützt
  2. Die Anforderung in composer.jsonist falsch.

Da Magento 2.1 vor PHP 7.1 veröffentlicht wurde, ist es höchstwahrscheinlich Option (2) und die Anforderung in composer.json wurde nur noch nicht aktualisiert.

Sie können es jedoch ignorieren und Magento trotzdem installieren, wenn Sie das --ignore-platform-reqsArgument zu Ihrem composer installBefehl hinzufügen .

Update: Wie von https://github.com/magento/magento2/issues/7663 bestätigt , ist Magento 2.1 nicht mit PHP 7.1 kompatibel

Update 2: Es gibt eine zusammengeführte PR für 7.1-Kompatibilität, die Teil der Version sein wird. Siehe https://github.com/magento/magento2/pull/8609#issuecomment-281743983

Fabian Schmengler
quelle
3

Haftungsausschluss: Dies ist ein Hack. Verwenden Sie es mit Vorsicht.

So installieren und starten Sie das neueste Magento 2.1.3 mit PHP 7.1.0:

  1. Patch setup/src/Magento/Setup/Model/PhpRedinessCheck.php:

    79         #$normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion(PHP_VERSION);
    80         $normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion('7.0.2');
  2. Patch vendor/magento/framework/Encryption/Crypt.phpund suppress mcrypt / mdecrypt Warnungen mit @prefix:

    Bildbeschreibung hier eingeben

Ich habe diesen Hack auf der Beispieldateninstallation von Magento 2.1.3 getestet.

Ursprünglich von mir als Magento 2.1.3 auf PHP 7.1.0 veröffentlicht

Konstantin Gerasimov
quelle
1
ist es Ihnen wichtig zu erklären, warum Sie abstimmen?
Konstantin Gerasimov
3

Ich habe nicht composer install --ignore-platform-reqsnur dafür gesorgt, dass auf dem Server nichts anderes ausgeführt wird (oder etwas fehlt), das mit M2 nicht kompatibel ist.

Damit es funktioniert, habe ich PHP version 7.0.11 auf meinem Server ein Downgrade durchgeführt und das hat den Trick getan, sodass Magento 2.1.1 kompatibel ist PHP version 7.0.11und nichtPHP 7.1.0

Devtype
quelle
2

Zum Zeitpunkt des Schreibens ist die Magento-Version 2.1 und nicht kompatibel mit PHP7.1. Wenn Sie versuchen, es mit PHP7.1 auszuführen, erhalten Sie die folgende Fehlermeldung.

Weitere Informationen finden Sie unter https://github.com/magento/magento2/issues/5880

Deprecated Functionality: Function mcrypt_module_open() is deprecated in /var/www/html/magento/vendor/magento/fr
  amework/Encryption/Crypt.php on line 54
Yasin Yaqoobi
quelle
0

Sie müssen die Funktion in bearbeiten

your_magento_root/setup/src/Magento/Setup/Model/PhpReadinessCheck.php

und müssen hinzufügen $normalizedPhpVersion='7.0.6'; Line-In- getNormalizedCurrentPhpVersionFunktion

Die geänderte Funktion muss sein

private function getNormalizedCurrentPhpVersion($version)
    {
        try {
            $normalizedPhpVersion = $this->versionParser->normalize($version);
        } catch (\UnexpectedValueException $e) {
            $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', $version);
            $normalizedPhpVersion = $this->versionParser->normalize($prettyVersion);
        }
        $normalizedPhpVersion='7.0.6';
        return $normalizedPhpVersion;
    }

Dies wird Schritte bestehen und Sie können PHP7.1.4 auf Magento 2.1 verwenden

Prost!!!

Драган Драган
quelle