PHP 7 osiąga status wersji beta i obecnie trwa wiele testów. Biorąc pod uwagę, że Magento nadrobiło zaległości w ciągu ostatniego roku od „działa tylko na PHP 5.3” do „w pełni kompatybilnego z PHP 5.6”, chciałbym wiedzieć, ile rozważają kompatybilność PHP 7 dla Magento 1.x, a także Magento 2.
Znalazłem ten post przez Annę Filinę, gdzie znalazła jeden problem w Magento 1.9.1 (nadal niezmieniony w 1.9.2), ale biorąc pod uwagę, że Magento 1 nie ma testów jednostkowych, nie ufam, że to był jedyny problem.
Pytanie brzmi: czy zapewniona będzie zgodność PHP 7 z Magento 1? A ponieważ Magento 2 prawdopodobnie został już przetestowany na PHP 7 (dzięki zautomatyzowane testy!), Czy są jakieś znane problemy?
Odpowiedzi:
Magento oficjalnie ogłosiło 20 stycznia 2016 r., Że CE i EE 2.0.1 oficjalnie obsługują PHP 7.0.2.
Link: https://magento.com/blog/technical/new-magento-20-resources-and-support-php7
źródło
Jeśli używasz najnowszej wersji, M CE 1.9.2.2, istnieje rozszerzenie, które zapewni pełną zgodność z PHP 7: https://github.com/Inchoo/Inchoo_PHP7 . (Zastrzeżenie: Jestem autorem, choć społeczność bardzo pomaga).
Można go również zainstalować za pomocą Composer ze strony http://packages.firegento.com/ .
Wszystkie wymienione tutaj niezgodności zostały naprawione. Uważamy, że może być jeszcze kilka przypadków, ale nic nie powstrzymuje. Testy, zgłaszanie problemów i żądania ściągania są mile widziane.
źródło
Nie mam pojęcia o PHP7, ale domyślam się, że większość rzeczy jest nadal ważna w PHP7, więcej informacji można znaleźć na blogu Matthiasa Geniara
Myślę, że jedyne, co możemy mieć w Magento, to
preg_replace()
modyfikator ewaluacji, ale mam nadzieję, że nie.Oprócz tego Magento dostarczyło 1.9.2 ze zaktualizowanym TAF, który można znaleźć w dev. Dzięki temu powinieneś być w stanie uruchomić kilka testów frontonu na PHP7 i później sprawdzić dziennik
źródło
Brak komentarza do Magento 1, ale Magento 2 miał pewne problemy z nazwami klas, takimi jak „String”. Naprawienie nie zajęło dużo czasu, ale nie wyszło po wyjęciu z pudełka. Oczekuję, że Magento 2 zostanie naprawiony, ale może nie zostać jeszcze naprawiony z powodu innych priorytetów.
źródło
Jest prawie gotowy. Próbowałem uruchomić czysty Magento 1.9.2.1 z PHP 7 RC1, co spowodowało natychmiastową awarię (błąd krytyczny) Magento. Po naprawieniu tego problemu wszystko wydawało się działać, z wyjątkiem backendu, do którego nie mogłem się zalogować. Później okazało się, że jest to problem związany z sesją, który można załatać.
Krótko:
Błąd krytyczny można naprawić, zastępując,
Mage_Core_Model_Layout
a następnie zmieniając wiersz 555 z:$out .= $this->getBlock($callback[0])->$callback[1]();
na
$out .= $this->getBlock($callback[0])->{$callback[1]}();
Problem sesji chwilowo może być ustalona na podstawie nadrzędnych
Mage_Core_Model_Session_Abstract_Varien
i przepisywaniagetData
,setData
,unsetData
,addFullNames
metody, więc wszędzie tam, gdzie$this->_data
był używany, to zostaną zastąpione$_SESSION
.Jeśli ktoś jest zainteresowany rozwiązaniem, można je znaleźć tutaj .
źródło
Varien_File_Uploader
, patrz magento.stackexchange.com/questions/93066/...Magento2 jest gotowy na PHP 7. Dostosowanie kodu do PHP7 zostało wykonane i wszystkie zmiany są dostępne w gałęzi developerskiej. Zobacz problem na GitHub
Ponadto obsługa php 7 w Magento1 wymaga wstecznie niezgodnych zmian i myślę, że nie będzie oficjalnie obsługiwana.
źródło
Występuje problem z tym, jak Magento oblicza całkowitą sumę zamówienia i stosuje rabaty. To także powstrzymuje ekspresową kasę Paypal, ponieważ elementy zamówienia nie sumują się do ogólnej sumy z rabatem.
Problem wydaje się polegać na tym, że
Mage_Sales_Model_Config_Ordered::_compareTotals()
nie działa on tak samo w PHP7 jak PHP5 iuasort()
teraz opiera się na relacjach przechodnich przy porządkowaniu, ale nie musi to dotyczyć sum zamówień.Spróbuj użyć: -
źródło
To są moje badania, którymi chcę się podzielić z wami na temat niezgodności php7 magento. Obecnie znalazłem kilka miejsc, w których kod powinien zawieść z powodu jednolitej składni zmiennych.
Plik: app / code / core / Mage / ImportExport / Model / Export / Entity / Product / Type / Abstract.php
Metoda: overrideAttribute
Plik: app / code / core / Mage / ImportExport / Model / Export / Entity / Customer.php
Metoda: filterAttributeCollection
Plik: app / code / core / Mage / ImportExport / Model / Import / Uploader.php
Metoda: _validateFile
Plik: app / code / core / Mage / Catalog / Model / Product / Link / Api / V2.php
Metoda: przypisać
Plik: app / code / core / Mage / Catalog / Model / Product / Link / Api / V2.php
Metoda: aktualizacja
Plik: lib / Varien / File / Uploader.php
Metoda: _validateFile
Plik: app / code / core / Mage / Core / Model / Layout.php
Metoda: getOutput
źródło
Oprócz innych odpowiedzi związanych z Magento 1:
W
Zend_XmlRpc_Server
Zend Framework 1.12.12 naprawiono niezgodność PHP 7 zWszystkie wersje wcześniejsze niż CE 1.9.2.2 / EE 1.14.2.2 używają starszej wersji Zend Framework, dlatego mogą wystąpić problemy, jeśli użyjesz interfejsu API XML-RPC Magento.
źródło
Sprawdź pliki z inchoo, które zostały zmienione, aby M1 był kompatybilny z php 7, to niewielkie zmiany w kilku plikach, ale inteligentna praca Inchoo. https://github.com/Inchoo/Inchoo_PHP7/tree/master/app/code/local/Inchoo/PHP7
źródło
Używam Magento 2 CE w wersji 2.1.4 i działa dobrze.
magento \ app \ bootstrap.php
źródło
Krótka odpowiedź brzmi „nie”. Magento CE 1.9.2.4 oficjalnie obsługuje PHP 5.4 i 5.5. Podczas gdy PHP 5.6 działa dobrze, nasyca pliki dziennika mnóstwem komunikatów ostrzegawczych.
Długa odpowiedź jest taka, że stosunkowo łatwo go zmodyfikować, aby obsługiwał obsługę PHP7. Jednak wiele rozszerzeń nadal nie jest kompatybilnych z PHP7, więc w dużej mierze jesteś sam.
źródło
PHP 7.0 przestaje istnieć od pierwszego tygodnia grudnia 2018 r.
W tym poście aktualna wersja Magento 2.2.3 (wydanie z 20 lutego 2018 r.) Nie obsługuje PHP 7.1 ani PHP 7.2.
Obsługiwane wersje możesz potwierdzić, sprawdzając
app/bootstrap.php
folder instalacyjny Magento i szukając kodu podobnego do następującego:Wydaje się również, że występują problemy,
.htaccess
które powodują 500 błędów w Apache 2.4.Dodatkowo dołączony plik kompozytora zawiera tylko zależności dla php5.5
źródło