Magento 2.1.1 không tương thích với PHP 7.1.0


14

Tôi đã v7.1.0RC3cài đặt máy chủ mới . Theo DevDocs Magento 2 tương thích với 7.0.2 up to 7.1.0, except for 7.0.5PHP 7.1.0tương thích với M2 tuy nhiên khi thử cài đặt repo tôi gặp lỗi sau:

Vấn đề 1 - Yêu cầu cài đặt cho magento / sản phẩm-cộng đồng phiên bản 2.1.1 -> thỏa đáng bởi magento / sản phẩm-cộng đồng-phiên bản [2.1.1]. - magento / sản phẩm-cộng đồng phiên bản 2.1.1 yêu cầu php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> phiên bản PHP của bạn (7.1.0RC3) không đáp ứng yêu cầu đó.

Câu trả lời:


23

Cập nhật - Tháng 9 năm 2017:

Magento 2.2 hiện chính thức hỗ trợ PHP 7.1, vì vậy đó là phiên bản Magento bạn nên nhắm đến từ bây giờ nếu PHP 7.1 là thứ bạn muốn hoặc cần trên nền tảng của bạn.


Bản gốc - Tháng 10 năm 2016:

Tôi thực sự tự hỏi liệu tài liệu DevDocs có phải là một lỗi không và có lẽ chúng có nghĩa là PHP 7.0.10 thay vì 7.1.0, điều đó sẽ có ý nghĩa hơn đối với tôi.

Điều đó đang được nói, tôi đoán Magento 2.1.1 có thể tương thích với PHP 7.1, nếu bạn muốn kiểm tra nó, chỉ cần thêm tham số bổ sung này vào các lệnh soạn thảo của bạn để báo cho Trình soạn thảo bỏ qua kiểm tra phiên bản PHP trong thời gian hiện tại:

composer install --ignore-platform-reqs

Cập nhật:

Sau khi nêu ra một vấn đề trên Github, mô tả yêu cầu hiện đã được cập nhật để phản ánh rằng PHP 7.1 không được hỗ trợ tại thời điểm này. Mô tả thực sự là một lỗi đánh máy.


Nó trông giống như vấn đề nhà soạn nhạc như fschmengler đề xuất dưới đây, nhưng đó lại là tài liệu dev gây hiểu lầm. Đã hạ cấp xuống phiên bản PHP v7.0.11 và bingo.
Devtype

9

Có hai khả năng:

  1. Các devdocs sai và PHP 7.1 không được hỗ trợ
  2. Yêu cầu trong composer.jsonlà sai.

Do Magento 2.1 được phát hành trước PHP 7.1, nên rất có thể là tùy chọn (2) và yêu cầu trong composer.json vẫn chưa được cập nhật.

Nhưng bạn có thể bỏ qua nó và cài đặt Magento anyways, nếu bạn thêm --ignore-platform-reqsđối số vào composer installlệnh của mình .

Cập nhật: Theo xác nhận của https://github.com/magento/magento2/issues/7663 , Magento 2.1 không tương thích với PHP 7.1

Cập nhật 2: Đã có một PR hợp nhất cho khả năng tương thích 7.1 sẽ là một phần của phiên bản . Xem https://github.com/magento/magento2/pull/8609#issuecomment-281743983


3

từ chối trách nhiệm: đây là một hack. sử dụng nó một cách thận trọng.

Dưới đây là cách cài đặt và chạy Magento 2.1.3 mới nhất với php 7.1.0:

  1. bản vá 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.phpvà chặn các cảnh báo mcrypt / mdecrypt bằng @tiền tố:

    nhập mô tả hình ảnh ở đây

Tôi đã thử nghiệm bản hack này trên cài đặt dữ liệu mẫu Magento 2.1.3.

Được xuất bản lần đầu bởi tôi với tên Magento 2.1.3 trên PHP 7.1.0


1
quan tâm để giải thích tại sao downvote?
Konstantin Gerasimov

3

Tôi đã không làm composer install --ignore-platform-reqs chỉ để đảm bảo rằng tôi không chạy bất cứ thứ gì khác trên máy chủ (hoặc thiếu thứ gì đó) không tương thích với M2.

Để làm cho nó hoạt động, tôi đã hạ cấp xuống PHP version 7.0.11 máy chủ của mình và điều đó đã tạo ra mánh khóe để Magento 2.1.1 tương thích PHP version 7.0.11và khôngPHP 7.1.0


2

Khi viết bản này, phiên bản Magento là 2.1 và nó không tương thích với PHP7.1. Nếu bạn cố chạy nó với PHP7.1, bạn sẽ gặp lỗi sau.

Xem thêm tại đây 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

Bạn cần chỉnh sửa chức năng nằm trong

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

và cần thêm $normalizedPhpVersion='7.0.6'; xếp hànggetNormalizedCurrentPhpVersion chức năng

Hàm thay đổi cần phải là

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

Điều này sẽ vượt qua các bước và bạn có thể sử dụng PHP7.1.4 trên Magento 2.1

Chúc mừng !!!


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.