Magento 2.1.1 tidak kompatibel dengan PHP 7.1.0


14

Saya memiliki server baru dengan PHP yang v7.1.0RC3diinstal. Menurut DevDocs Magento 2 kompatibel dengan 7.0.2 up to 7.1.0, except for 7.0.5yang membuat PHP 7.1.0kompatibel dengan M2 namun ketika mencoba menginstal repo saya mendapatkan kesalahan berikut:

Masalah 1 - Permintaan instalasi untuk magento / produk-komunitas-edisi 2.1.1 -> memuaskan oleh magento / produk-komunitas-edisi [2.1.1]. - magento / produk-komunitas-edisi 2.1.1 membutuhkan php ~ 5.6.0 | 7.0.2 | ~ 7.0.6 -> versi PHP Anda (7.1.0RC3) tidak memenuhi persyaratan itu.

Jawaban:


23

Pembaruan - September 2017:

Magento 2.2 sekarang secara resmi mendukung PHP 7.1, jadi itulah versi Magento yang harus Anda tuju mulai sekarang jika PHP 7.1 adalah sesuatu yang Anda inginkan atau butuhkan di platform Anda.


Asli - Oktober 2016:

Saya benar-benar bertanya-tanya apakah dokumentasi DevDocs adalah kesalahan dan mungkin maksudnya PHP 7.0.10 bukannya 7.1.0, itu akan lebih masuk akal bagi saya.

Yang sedang berkata, saya kira Magento 2.1.1 bisa kompatibel dengan PHP 7.1, jika Anda ingin mengujinya, tambahkan saja parameter tambahan ini ke perintah komposer Anda untuk memberitahu Composer untuk mengabaikan pemeriksaan versi PHP untuk saat ini:

composer install --ignore-platform-reqs

Memperbarui:

Setelah mengajukan masalah pada Github, deskripsi persyaratan sekarang telah diperbarui untuk mencerminkan bahwa PHP 7.1 tidak didukung pada saat ini. Deskripsi itu memang salah ketik.


Itu tampak lebih seperti masalah komposer seperti yang disarankan fschmengler di bawah ini, tapi itu adalah dokumen dev yang menyesatkan lagi. Turun ke PHP versi v7.0.11 dan bingo.
Devtype

9

Ada dua kemungkinan:

  1. Devdocs salah dan PHP 7.1 tidak didukung
  2. Persyaratan dalam composer.jsonsalah.

Sejak Magento 2.1 dirilis sebelum PHP 7.1, kemungkinan besar opsi (2) dan persyaratan di composer.json belum diperbarui.

Tetapi Anda dapat mengabaikannya dan menginstal Magento, jika Anda menambahkan --ignore-platform-reqsargumen kecomposer install perintah .

Pembaruan: Seperti yang dikonfirmasi oleh https://github.com/magento/magento2/issues/7663 , Magento 2.1 tidak kompatibel dengan PHP 7.1

Pembaruan 2: Telah ada PR gabungan untuk kompatibilitas 7.1 yang akan menjadi bagian dari rilis . Lihat https://github.com/magento/magento2/pull/8609#issuecomment-281743983


3

disclaimer: ini adalah hack. gunakan dengan hati-hati.

di sini adalah cara menginstal dan menjalankan Magento 2.1.3 terbaru dengan php 7.1.0:

  1. tambalan setup/src/Magento/Setup/Model/PhpRedinessCheck.php:

    79         #$normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion(PHP_VERSION);
    80         $normalizedPhpVersion = $this->getNormalizedCurrentPhpVersion('7.0.2');
  2. menambal vendor/magento/framework/Encryption/Crypt.phpdan menekan peringatan mcrypt / mdecrypt dengan @awalan:

    masukkan deskripsi gambar di sini

Saya menguji hack ini pada instalasi data sampel Magento 2.1.3.

Awalnya diterbitkan oleh saya sebagai Magento 2.1.3 di PHP 7.1.0


1
mau menjelaskan mengapa downvote?
Konstantin Gerasimov

3

Saya tidak melakukan composer install --ignore-platform-reqshanya untuk memastikan bahwa saya tidak menjalankan apa pun di server (atau melewatkan sesuatu) yang tidak kompatibel dengan M2.

Untuk membuatnya berfungsi, saya menurunkan versi ke PHP version 7.0.11 server saya dan melakukan trik agar Magento 2.1.1 kompatibel dengan PHP version 7.0.11dan tidakPHP 7.1.0


2

Pada penulisan ini, versi Magento 2.1 dan tidak kompatibel dengan PHP7.1. Jika Anda mencoba menjalankannya dengan PHP7.1 Anda akan mendapatkan kesalahan berikut.

Lihat lebih lanjut di sini 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

Anda perlu mengedit fungsi yang terletak di

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

dan perlu menambahkan $normalizedPhpVersion='7.0.6'; antrigetNormalizedCurrentPhpVersionfungsi

Fungsi yang diubah harus

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

Ini akan melewati langkah-langkah dan Anda dapat menggunakan PHP7.1.4 di Magento 2.1

Bersulang!!!


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.