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 แต่เมื่อพยายามติดตั้ง repo ฉันได้รับข้อผิดพลาดดังต่อไปนี้:

ปัญหา 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

อัปเดต - กันยายน 2560:

Magento 2.2 ตอนนี้รองรับ PHP 7.1 อย่างเป็นทางการดังนั้นนั่นคือ Magento version ที่คุณควรตั้งเป้าหมายจากนี้ไปหาก PHP 7.1 เป็นสิ่งที่คุณต้องการหรือต้องการบนแพลตฟอร์มของคุณ


ต้นฉบับ - ตุลาคม 2559:

ฉันสงสัยจริงๆว่าเอกสาร 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 แนะนำด้านล่าง แต่มันเป็นเอกสาร 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 ยังไม่ได้รับการอัพเดต

แต่คุณสามารถเพิกเฉยได้และติดตั้ง 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
สนใจที่จะอธิบายว่าทำไม downvote
Konstantin Gerasimov

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

ขณะที่เขียนเวอร์ชั่นวีโอไอพีนี้คือ 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 tar -xzvf 2.2.tar.gz mv magento2-2.2 / magento2 /

แค่นั้นแหละ!!!! ทำไมต้องลดระดับหากนี่เป็นการตั้งค่าใหม่ ไปเพื่อการปล่อยเสถียรล่าสุด :)!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.