Magento 2.1.1 не сумісний з PHP 7.1.0


14

У мене новий сервер із PHP v7.1.0RC3. За DevDocs Magento 2 сумісний, 7.0.2 up to 7.1.0, except for 7.0.5який робить PHP 7.1.0сумісним з M2, проте при спробі встановити репо я отримую таку помилку:

Проблема 1 - Запит на встановлення magento / product-community-edition 2.1.1 -> задовольняється magento / product-community-edition [2.1.1]. - magento / product-community-edition 2.1.1 вимагає php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> ваша версія PHP (7.1.0RC3) не відповідає цій вимозі.

Відповіді:


23

Оновлення - вересень 2017 року:

Magento 2.2 тепер офіційно підтримує PHP 7.1, так що це версія Magento, до якої слід прагнути, якщо PHP 7.1 - це те, що вам потрібно або потрібно на вашій платформі.


Оригінал - жовтень 2016 року:

Мені насправді цікаво, чи документація DevDocs є помилкою, і, можливо, вони мали на увазі PHP 7.0.10 замість 7.1.0, це могло б мати більше сенсу для мене.

Зважаючи на це, я думаю, що Magento 2.1.1 може бути сумісний з PHP 7.1, якщо ви хочете перевірити його, просто додайте цей додатковий параметр до команд композитора, щоб сказати Composer ігнорувати перевірку версії PHP на даний момент:

composer install --ignore-platform-reqs

Оновлення:

Після підняття проблеми на Github тепер опис вимог було оновлено, щоб відобразити, що PHP 7.1 не підтримується на даний момент. Опис справді був помилковим.


Це виглядало скоріше як композиторський випуск, як запропонував fschmengler нижче, але це знову оману розробників. Переведено на версію PHP v7.0.11 та бінго.
Devtype

9

Є дві можливості:

  1. Devdocs помиляються, і PHP 7.1 не підтримується
  2. Вимога в composer.json- неправильна.

Оскільки Magento 2.1 був випущений до PHP 7.1, це, швидше за все, варіант (2), а вимога в composer.json поки що не оновлена.

Але ви можете проігнорувати його та встановити Magento будь-коли, якщо ви додасте --ignore-platform-reqsаргумент у свою composer installкоманду.

Оновлення: Як підтверджено https://github.com/magento/magento2/isissue/7663 , Magento 2.1 не сумісний із PHP 7.1

Оновлення 2: Був об'єднаний PR для сумісності 7.1, який буде частиною випуску . Дивіться https://github.com/magento/magento2/pull/8609#issuecomment-281743983


3

відмова від відповідальності: це хак. використовуйте його обережно.

ось як встановити та запустити останню Magento 2.1.3 з php 7.1.0:

  1. пластир setup/src/Magento/Setup/Model/PhpRedinessCheck.php:

    79         #$normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion(PHP_VERSION);
    80         $normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion('7.0.2');
  2. виправлення vendor/magento/framework/Encryption/Crypt.phpта придушення попереджень mcrypt / mdecrypt з @префіксом:

    введіть тут опис зображення

Я протестував цей злом на встановленні зразків даних Magento 2.1.3.

Спочатку опублікував мене як Magento 2.1.3 на PHP 7.1.0


1
Ви хочете пояснити, чому голосити?
Костянтин Герасимов

3

Я не робив composer install --ignore-platform-reqsтак, щоб переконатися, що я не запускаю нічого іншого на сервері (або щось пропускаю), що є несумісним з M2.

Для того, щоб він працював, я перейшов PHP version 7.0.11 на свій сервер, і це зробив трюк, щоб Magento 2.1.1 був сумісним PHP version 7.0.11і неPHP 7.1.0


2

На момент написання цієї версії Magento версія 2.1, і вона не сумісна з PHP7.1. Якщо ви спробуєте запустити його з PHP7.1, ви отримаєте наступну помилку.

Детальніше дивіться тут https://github.com/magento/magento2/isissue/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

Вам потрібно відредагувати функцію, розташовану в

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

і потрібно додати $normalizedPhpVersion='7.0.6'; рядок у getNormalizedCurrentPhpVersionфункції

Змінена функція повинна бути

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

Це пройде кроки, і ви можете використовувати PHP7.1.4 на Magento 2.1

Ура !!!


0

Власне, це просто помилка друку на фрагменті команди.

Змінити: wget https://github.com/magento/magento2/archive/2.1.tar.gz tar -xzvf 2.1.tar.gz mv magento2-2.1 / magento2 /

Для Wget https://github.com/magento/magento2/archive/2.2.tar.gz дьоготь -xzvf 2.2.tar.gz мв magento2-2.2 / magento2 /

Це воно!!!! Навіщо знижувати рівень, якщо це нова настройка. Ідіть до останнього стабільного випуску :)!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.