Magento 2.1.1 nie jest kompatybilny z PHP 7.1.0

14

Mam nowy serwer z v7.1.0RC3zainstalowanym PHP . Według DevDocs Magento 2 jest kompatybilny, 7.0.2 up to 7.1.0, except for 7.0.5co czyni go PHP 7.1.0kompatybilnym z M2, jednak przy próbie instalacji repo pojawia się następujący błąd:

Problem 1 - Żądanie instalacji Magento / Product-Community-Edition 2.1.1 -> spełnione przez Magento / Product-Community-Edition [2.1.1]. - Magento / Product-Community-Edition 2.1.1 wymaga php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> Twoja wersja PHP (7.1.0RC3) nie spełnia tego wymagania.

Devtype
źródło

Odpowiedzi:

23

Aktualizacja - wrzesień 2017 r .:

Magento 2.2 oficjalnie obsługuje teraz PHP 7.1, więc jest to wersja Magento, do której powinieneś dążyć, jeśli PHP 7.1 jest czymś, czego chcesz lub potrzebujesz na swojej platformie.


Oryginał - październik 2016 r .:

Właściwie zastanawiam się, czy dokumentacja DevDocs jest błędem i może oznaczały one PHP 7.0.10 zamiast 7.1.0, co miałoby dla mnie większy sens.

Biorąc to pod uwagę, wydaje mi się, że Magento 2.1.1 może być kompatybilny z PHP 7.1, jeśli chcesz go przetestować, po prostu dodaj ten dodatkowy parametr do poleceń kompozytora, aby poinformować Kompozytora, aby na razie zignorował sprawdzenie wersji PHP:

composer install --ignore-platform-reqs

Aktualizacja:

Po zgłoszeniu problemu na Github, opis wymagań został teraz zaktualizowany, aby odzwierciedlić, że PHP 7.1 nie jest obecnie obsługiwane. Opis był rzeczywiście literówką.

TiEul
źródło
Wyglądało to bardziej na problem kompozytora, jak sugeruje poniżej fschmengler, ale znów wprowadzają w błąd dokumentacje deweloperów. Obniżono wersję PHP do wersji 7.0.11 i bingo.
Devtype,
9

Istnieją dwie możliwości:

  1. Devdocs są nieprawidłowe i PHP 7.1 nie jest obsługiwany
  2. Wymaganie composer.jsonjest nieprawidłowe.

Ponieważ Magento 2.1 zostało wydane przed PHP 7.1, jest to najprawdopodobniej opcja (2), a wymaganie w composer.json nie zostało jeszcze zaktualizowane.

Możesz jednak zignorować i zainstalować Magento, jeśli dodasz --ignore-platform-reqsargument do swojego composer installpolecenia.

Aktualizacja: potwierdzone przez https://github.com/magento/magento2/issues/7663 , Magento 2.1 nie jest kompatybilny z PHP 7.1

Aktualizacja 2: Połączono PR dla zgodności z 7.1, która będzie częścią wydania . Zobacz https://github.com/magento/magento2/pull/8609#issuecomment-281743983

Fabian Schmengler
źródło
3

zrzeczenie się: to jest włamanie. używaj go ostrożnie.

oto jak zainstalować i uruchomić najnowszą wersję Magento 2.1.3 z php 7.1.0:

  1. łatka setup/src/Magento/Setup/Model/PhpRedinessCheck.php:

    79         #$normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion(PHP_VERSION);
    80         $normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion('7.0.2');
  2. Plaster vendor/magento/framework/Encryption/Crypt.phpi tłumią mcrypt / mdecrypt ostrzeżenia o @początkowy:

    wprowadź opis zdjęcia tutaj

Przetestowałem ten hack na instalacji przykładowych danych Magento 2.1.3.

Pierwotnie opublikowane przeze mnie jako Magento 2.1.3 na PHP 7.1.0

Konstantin Gerasimov
źródło
1
wyjaśnić, dlaczego głosować negatywnie?
Konstantin Gerasimov
3

Nie zrobiłem tego, composer install --ignore-platform-reqsaby upewnić się, że nie uruchamiam niczego innego na serwerze (lub czegoś brakuje), co jest niezgodne z M2.

Aby to zadziałało, obniżyłem wersję PHP version 7.0.11 na mój serwer i to załatwiło sprawę, więc Magento 2.1.1 jest kompatybilny PHP version 7.0.11i niePHP 7.1.0

Devtype
źródło
2

W chwili pisania tego wersja Magento ma wersję 2.1 i nie jest kompatybilna z PHP7.1. Jeśli spróbujesz uruchomić go z PHP7.1, pojawi się następujący błąd.

Zobacz więcej tutaj 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
źródło
0

Musisz edytować funkcję znajdującą się w

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

i trzeba dodać $normalizedPhpVersion='7.0.6'; linia w getNormalizedCurrentPhpVersionfunkcji

Zmieniona funkcja musi być

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;
    }

To przejdzie kroki i możesz używać PHP7.1.4 na Magento 2.1

Twoje zdrowie!!!

Драган Драган
źródło