Magento 2.1.1 не совместим с PHP 7.1.0


14

У меня новый сервер с v7.1.0RC3установленным PHP . В соответствии с 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, чтобы Composer игнорировал проверку версии PHP на данный момент:

composer install --ignore-platform-reqs

Обновить:

После того, как возникла проблема с Github, описание требований было обновлено, чтобы отразить, что PHP 7.1 не поддерживается на данный момент. Описание действительно было опечаткой.


Это больше похоже на проблему с композитором, как предложил fschmengler ниже, но это снова вводящая в заблуждение документация разработчика. Понизился до версии PHP v7.0.11 и бинго.
Девтип

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/issues/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/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

Вам нужно отредактировать функцию, расположенную в

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.