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.5PHP 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)不满足该要求。

Answers:


23

更新-2017年9月:

Magento 2.2现在正式支持PHP 7.1,因此,从现在开始,如果您希望在平台上使用PHP 7.1,则应该使用Magento版本。


原创-2016年10月:

我实际上想知道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所建议的那样,它看起来更像是作曲家的问题,但这又是误导性的dev文档。降级为PHP版本v7.0.11和Bingo。
Devtype

9

有两种可能性:

  1. devdocs错误,并且不支持PHP 7.1
  2. 中的要求composer.json是错误的。

自从Magento 2.1在PHP 7.1之前发布以来,它很可能是选项(2),并且composer.json中的要求尚未更新。

但是,如果您将--ignore-platform-reqs参数添加到composer install命令中,则可以忽略它并以任何方式安装Magento 。

更新:https://github.com/magento/magento2/issues/7663所确认,Magento 2.1与PHP 7.1不兼容

更新2:为7.1兼容性已合并的PR将成为版本的一部分。参见https://github.com/magento/magento2/pull/8609#issuecomment-281743983


3

免责声明:这是黑客。谨慎使用。

这是如何使用PHP 7.1.0安装和运行最新的Magento 2.1.3:

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

这将通过步骤,您可以在Magento 2.1上使用PHP7.1.4

干杯!!!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.