Magento 2.1.1 non compatibile con PHP 7.1.0


14

Ho un nuovo server con PHP v7.1.0RC3installato. Secondo DevDocs Magento 2 è compatibile con il 7.0.2 up to 7.1.0, except for 7.0.5quale lo rende PHP 7.1.0compatibile con M2 ma quando provo ad installare un repository ottengo il seguente errore:

Problema 1 - Richiesta di installazione per magento / product-community-edition 2.1.1 -> soddisfacente per magento / product-community-edition [2.1.1]. - magento / product-community-edition 2.1.1 richiede php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> la tua versione di PHP (7.1.0RC3) non soddisfa tale requisito.

Risposte:


23

Aggiornamento - settembre 2017:

Magento 2.2 ora supporta ufficialmente PHP 7.1, quindi questa è la versione di Magento a cui dovresti puntare da ora in poi se PHP 7.1 è qualcosa che desideri o ti serve sulla tua piattaforma.


Originale - ottobre 2016:

In realtà mi chiedo se la documentazione DevDocs sia un errore e forse significassero PHP 7.0.10 invece di 7.1.0, questo avrebbe più senso per me.

Detto questo, suppongo che Magento 2.1.1 potrebbe essere compatibile con PHP 7.1, se vuoi testarlo, aggiungi questo parametro aggiuntivo ai comandi del tuo compositore per dire a Composer di ignorare il controllo della versione di PHP per il momento:

composer install --ignore-platform-reqs

Aggiornare:

Dopo aver sollevato un problema su Github, la descrizione dei requisiti ora è stata aggiornata per riflettere che PHP 7.1 non è supportato a questo punto. La descrizione era davvero un errore di battitura.


Sembrava più un problema del compositore come suggerito da fschmengler di seguito, ma sono di nuovo i documenti dev fuorvianti. Declassato alla versione PHP v7.0.11 e bingo.
Devtype,

9

Vi sono due possibilità:

  1. I devdocs sono errati e PHP 7.1 non è supportato
  2. Il requisito composer.jsonè sbagliato.

Da quando Magento 2.1 è stato rilasciato prima di PHP 7.1, è probabilmente l'opzione (2) e il requisito in composer.json non è stato ancora aggiornato.

Ma puoi ignorarlo e installare Magento comunque, se aggiungi l' --ignore-platform-reqsargomento al tuo composer installcomando.

Aggiornamento: come confermato da https://github.com/magento/magento2/issues/7663 , Magento 2.1 non è compatibile con PHP 7.1

Aggiornamento 2: c'è stata una PR unita per compatibilità 7.1 che farà parte della versione . Vedi https://github.com/magento/magento2/pull/8609#issuecomment-281743983


3

disclaimer: questo è un trucco. usalo con cautela.

ecco come installare ed eseguire l'ultima versione di Magento 2.1.3 con 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.phpe sopprimere gli avvisi mcrypt / mdecrypt con @prefisso:

    inserisci qui la descrizione dell'immagine

Ho testato questo hack sull'installazione di dati di esempio Magento 2.1.3.

Originariamente pubblicato da me come Magento 2.1.3 su PHP 7.1.0


1
ti interessa spiegare perché il downvote?
Konstantin Gerasimov,

3

Non ho fatto composer install --ignore-platform-reqssolo per assicurarmi di non eseguire nient'altro sul server (o di perdere qualcosa) incompatibile con M2.

Per farlo funzionare ho PHP version 7.0.11 eseguito il downgrade sul mio server e questo ha funzionato in modo che Magento 2.1.1 sia compatibile PHP version 7.0.11e nonPHP 7.1.0


2

Al momento della stesura di questo, la versione di Magento è 2.1 e non è compatibile con PHP7.1. Se provi ad eseguirlo con PHP7.1 otterrai il seguente errore.

Scopri di più qui 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

È necessario modificare la funzione situata in

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

e bisogno di aggiungere $normalizedPhpVersion='7.0.6'; linea in getNormalizedCurrentPhpVersionfunzione

La funzione modificata deve essere

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

Questo passerà i passaggi e puoi usare PHP7.1.4 su Magento 2.1

Saluti!!!


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.