Magento 2.1.1 não compatível com PHP 7.1.0


14

Eu tenho um novo servidor com PHP v7.1.0RC3instalado. De acordo com o DevDocs, o Magento 2 é compatível com o 7.0.2 up to 7.1.0, except for 7.0.5que o torna PHP 7.1.0compatível com o M2, no entanto, quando tentei instalar o repo, recebo o seguinte erro:

Problema 1 - Pedido de instalação do magento / product-community-edition 2.1.1 -> satisfazível pelo magento / product-community-edition [2.1.1]. - magento / product-community-edition 2.1.1 requer php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> sua versão do PHP (7.1.0RC3) não atende a esse requisito.

Respostas:


23

Atualização - setembro de 2017:

O Magento 2.2 agora suporta oficialmente o PHP 7.1, então essa é a versão do Magento que você deve procurar a partir de agora se o PHP 7.1 for algo que você deseja ou precisa em sua plataforma.


Original - outubro de 2016:

Na verdade, estou me perguntando se a documentação do DevDocs é um erro e talvez eles tenham significado PHP 7.0.10 em vez de 7.1.0, isso faria mais sentido para mim.

Dito isto, acho que o Magento 2.1.1 pode ser compatível com o PHP 7.1. Se você quiser testá-lo, basta adicionar este parâmetro adicional aos comandos do compositor para dizer ao Composer que ignore a verificação da versão do PHP por enquanto:

composer install --ignore-platform-reqs

Atualizar:

Depois de levantar um problema no Github, a descrição dos requisitos agora foi atualizada para refletir que o PHP 7.1 não é suportado neste momento. A descrição foi realmente um erro de digitação.


Parecia mais um problema de compositor, como sugerido pelo fschmengler abaixo, mas são os dev docs enganosos novamente. Desatualizado para a versão PHP v7.0.11 e bingo.
Devtype #

9

Existem duas possibilidades:

  1. Os devdocs estão errados e o PHP 7.1 não é suportado
  2. O requisito composer.jsonestá errado.

Desde que o Magento 2.1 foi lançado antes do PHP 7.1, é provavelmente a opção (2) e o requisito no composer.json ainda não foi atualizado.

Mas você pode ignorá-lo e instalar o Magento de qualquer maneira, se você adicionar o --ignore-platform-reqsargumento ao seu composer installcomando.

Atualização: Conforme confirmado em https://github.com/magento/magento2/issues/7663 , o Magento 2.1 não é compatível com o PHP 7.1

Atualização 2: Houve um PR mesclado para compatibilidade com 7.1 que fará parte da versão . Consulte https://github.com/magento/magento2/pull/8609#issuecomment-281743983


3

aviso: este é um hack. use-o com cuidado.

aqui está como instalar e executar o Magento 2.1.3 mais recente com o 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. corrija vendor/magento/framework/Encryption/Crypt.phpe suprima avisos mcrypt / mdecrypt com @prefixo:

    insira a descrição da imagem aqui

Testei esse hack na instalação de dados de amostra do Magento 2.1.3.

Originalmente publicado por mim como Magento 2.1.3 no PHP 7.1.0


1
gostaria de explicar por que voto negativo?
Konstantin Gerasimov 22/02

3

Não fiz composer install --ignore-platform-reqsapenas para me certificar de que não estou executando mais nada no servidor (ou perdendo algo) que seja incompatível com o M2.

Para fazê-lo funcionar, fiz o downgrade para o PHP version 7.0.11 meu servidor e isso funcionou, de modo que o Magento 2.1.1 é compatível PHP version 7.0.11e nãoPHP 7.1.0


2

Enquanto escrevia isso, a versão Magento é 2.1 e não é compatível com o PHP7.1. Se você tentar executá-lo com o PHP7.1, receberá o seguinte erro.

Veja mais aqui 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

Você precisa editar a função localizada em

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

e precisa adicionar $normalizedPhpVersion='7.0.6'; getNormalizedCurrentPhpVersionfunção de linha

A função alterada precisa ser

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

Isto passará etapas e você pode usar o PHP7.1.4 no Magento 2.1

Felicidades!!!


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.