Magento 2.1.1 n'est pas compatible avec PHP 7.1.0


14

J'ai un nouveau serveur avec PHP v7.1.0RC3installé. Selon DevDocs, Magento 2 est compatible avec 7.0.2 up to 7.1.0, except for 7.0.5ce qui le rend PHP 7.1.0compatible avec M2, mais lorsque j'essaie d'installer le dépôt, j'obtiens l'erreur suivante:

Problème 1 - Demande d'installation de magento / product-community-edition 2.1.1 -> satisfiable par magento / product-community-edition [2.1.1]. - magento / product-community-edition 2.1.1 nécessite php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> votre version PHP (7.1.0RC3) ne satisfait pas à cette exigence.

Réponses:


23

Mise à jour - septembre 2017:

Magento 2.2 prend désormais officiellement en charge PHP 7.1, c'est donc la version de Magento que vous devriez viser à partir de maintenant si PHP 7.1 est quelque chose que vous voulez ou dont vous avez besoin sur votre plate-forme.


Original - octobre 2016:

Je me demande en fait si la documentation DevDocs est une erreur et peut-être qu'elle voulait dire PHP 7.0.10 au lieu de 7.1.0, cela aurait plus de sens pour moi.

Cela étant dit, je suppose que Magento 2.1.1 pourrait être compatible avec PHP 7.1, si vous voulez le tester, ajoutez simplement ce paramètre supplémentaire à vos commandes Composer pour dire à Composer d'ignorer la vérification de version PHP pour le moment:

composer install --ignore-platform-reqs

Mise à jour:

Après avoir soulevé un problème sur Github, la description des exigences a maintenant été mise à jour pour refléter le fait que PHP 7.1 n'est pas pris en charge à ce stade. La description était en effet une faute de frappe.


Cela ressemblait plus à un problème de compositeur comme le suggère fschmengler ci-dessous, mais ce sont à nouveau les documents de développement trompeurs. Rétrogradé à la version PHP v7.0.11 et au bingo.
Devtype

9

Il y a deux possibilités:

  1. Les devdocs sont incorrects et PHP 7.1 n'est pas pris en charge
  2. L'exigence en composer.jsonest erronée.

Depuis que Magento 2.1 est sorti avant PHP 7.1, il s'agit très probablement de l'option (2) et l'exigence dans composer.json n'a tout simplement pas été mise à jour.

Mais vous pouvez l'ignorer et installer Magento de toute façon, si vous ajoutez l' --ignore-platform-reqsargument à votre composer installcommande.

Mise à jour: comme confirmé par https://github.com/magento/magento2/issues/7663 , Magento 2.1 n'est pas compatible avec PHP 7.1

Mise à jour 2: il y a eu un PR fusionné pour la compatibilité 7.1 qui fera partie de la version . Voir https://github.com/magento/magento2/pull/8609#issuecomment-281743983


3

mentions légales: il s'agit d'un hack. utilisez-le avec prudence.

voici comment installer et exécuter le dernier Magento 2.1.3 avec 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.phpet suppress mcrypt / avertissements mdecrypt avec @préfixe:

    entrez la description de l'image ici

J'ai testé ce hack sur l'installation d'exemples de données Magento 2.1.3.

Publié à l'origine par moi sous le nom de Magento 2.1.3 sur PHP 7.1.0


1
soin d'expliquer pourquoi downvote?
Konstantin Gerasimov

3

Je ne me suis pas composer install --ignore-platform-reqscontenté de m'assurer que je n'exécute rien d'autre sur le serveur (ou qu'il manque quelque chose) incompatible avec M2.

Afin de le faire fonctionner, j'ai rétrogradé PHP version 7.0.11 sur mon serveur et cela a fait l'affaire pour que Magento 2.1.1 soit compatible avec PHP version 7.0.11et nonPHP 7.1.0


2

Au moment de l'écriture, la version de Magento est 2.1 et elle n'est pas compatible avec PHP7.1. Si vous essayez de l'exécuter avec PHP7.1, vous obtiendrez l'erreur suivante.

Voir plus ici 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

0

Vous devez modifier la fonction située dans

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

et besoin d'ajouter $normalizedPhpVersion='7.0.6'; ligne en getNormalizedCurrentPhpVersionfonction

La fonction modifiée doit être

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

Cela passera des étapes et vous pouvez utiliser PHP7.1.4 sur Magento 2.1

À votre santé!!!


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.