Magento 2.1.1 no es compatible con PHP 7.1.0


14

Tengo un nuevo servidor con PHP v7.1.0RC3instalado. De acuerdo con DevDocs, Magento 2 es compatible con lo 7.0.2 up to 7.1.0, except for 7.0.5que lo hace PHP 7.1.0compatible con M2; sin embargo, cuando intento instalar el repositorio, aparece el siguiente error:

Problema 1 - Solicitud de instalación para magento / product-community-edition 2.1.1 -> satisfactoria por magento / product-community-edition [2.1.1]. - magento / product-community-edition 2.1.1 requiere php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> su versión de PHP (7.1.0RC3) no cumple ese requisito.

Respuestas:


23

Actualización - septiembre de 2017:

Magento 2.2 ahora es oficialmente compatible con PHP 7.1, así que esa es la versión de Magento a la que debe aspirar de ahora en adelante si PHP 7.1 es algo que desea o necesita en su plataforma.


Original - octubre de 2016:

De hecho, me pregunto si la documentación de DevDocs es un error y tal vez significaban PHP 7.0.10 en lugar de 7.1.0, eso tendría más sentido para mí.

Dicho esto, supongo que Magento 2.1.1 podría ser compatible con PHP 7.1, si desea probarlo, simplemente agregue este parámetro adicional a sus comandos de compositor para decirle a Composer que ignore la verificación de versión de PHP por el momento:

composer install --ignore-platform-reqs

Actualizar:

Después de plantear un problema en Github, la descripción de los requisitos ahora se ha actualizado para reflejar que PHP 7.1 no es compatible en este momento. La descripción era de hecho un error tipográfico.


Se parecía más al problema del compositor como lo sugiere fschmengler a continuación, pero son los documentos de desarrollo engañosos nuevamente. Bajado a la versión PHP v7.0.11 y bingo.
Devtype

9

Hay dos posibilidades:

  1. Los devdocs son incorrectos y PHP 7.1 no es compatible
  2. El requisito en composer.jsonestá mal.

Desde que Magento 2.1 se lanzó antes de PHP 7.1, es muy probable que sea la opción (2) y el requisito en composer.json aún no se ha actualizado.

Pero puede ignorarlo e instalar Magento de todos modos, si agrega el --ignore-platform-reqsargumento a su composer installcomando.

Actualización: según lo confirmado por https://github.com/magento/magento2/issues/7663 , Magento 2.1 no es compatible con PHP 7.1

Actualización 2: se ha combinado un PR para la compatibilidad 7.1 que formará parte de la versión . Ver https://github.com/magento/magento2/pull/8609#issuecomment-281743983


3

descargo de responsabilidad: esto es un hack. Úselo con precaución.

Aquí se explica cómo instalar y ejecutar el último Magento 2.1.3 con php 7.1.0:

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

    79         #$normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion(PHP_VERSION);
    80         $normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion('7.0.2');
  2. parche vendor/magento/framework/Encryption/Crypt.phpy suprima las advertencias mcrypt / mdecrypt con @prefijo:

    ingrese la descripción de la imagen aquí

Probé este truco en la instalación de datos de muestra de Magento 2.1.3.

Publicado originalmente por mí como Magento 2.1.3 en PHP 7.1.0


1
¿Quieres explicar por qué votar a favor?
Konstantin Gerasimov

3

No lo hice composer install --ignore-platform-reqssolo para asegurarme de que no estoy ejecutando nada más en el servidor (o que me falta algo) que sea incompatible con M2.

Para que funcione, bajé a PHP version 7.0.11 mi servidor y eso funcionó para que Magento 2.1.1 sea compatible PHP version 7.0.11y noPHP 7.1.0


2

Al momento de escribir esto, la versión de Magento es 2.1 y no es compatible con PHP7.1. Si intenta ejecutarlo con PHP7.1 obtendrá el siguiente error.

Ver más aquí 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

Necesita editar la función ubicada en

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

y necesita agregar $normalizedPhpVersion='7.0.6'; línea en getNormalizedCurrentPhpVersionfunción

La función modificada debe 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;
    }

Esto pasará pasos y puede usar PHP7.1.4 en Magento 2.1

¡¡¡Salud!!!


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.