PHP 7 erreicht den Beta-Status und es werden derzeit viele Tests durchgeführt. Da Magento im letzten Jahr von "läuft nur mit PHP 5.3" zu "voll kompatibel mit PHP 5.6" aufgeholt hat, würde ich gerne wissen, wie sehr man PHP 7-Kompatibilität für Magento 1.x sowie für Magento 2 in Betracht zieht.
Ich habe diesen Beitrag von Anna Filina gefunden, wo sie eine Ausgabe in Magento 1.9.1 gefunden hat (in 1.9.2 immer noch unverändert), aber da Magento 1 keine Komponententests hat, vertraue ich nicht darauf, dass dies die einzige Ausgabe war.
Die Frage ist also: Wird die PHP 7-Kompatibilität für Magento 1 gewährleistet sein? Und da Magento 2 wahrscheinlich bereits auf PHP 7 getestet wurde (Dank automatisierter Tests!), Gibt es bekannte Probleme?
Antworten:
Magento gab am 20. Januar 2016 offiziell bekannt, dass CE und EE 2.0.1 PHP 7.0.2 offiziell unterstützen.
Link: https://magento.com/blog/technical/new-magento-20-resources-and-support-php7
quelle
Wenn Sie die neueste Version, M CE 1.9.2.2, verwenden, gibt es eine Erweiterung, die die vollständige PHP 7-Kompatibilität gewährleistet: https://github.com/Inchoo/Inchoo_PHP7 . (Haftungsausschluss: Ich bin der Autor, obwohl die Community sehr hilfreich ist.)
Es kann auch über Composer unter http://packages.firegento.com/ installiert werden .
Alle hier genannten Inkompatibilitäten sind behoben. Wir glauben, dass es immer noch ein paar Randfälle gibt, aber nichts, was aufhalten könnte. Tests, Fehlerberichte und Pull-Anfragen sind willkommen.
quelle
Keine Ahnung von PHP7, aber ich denke, das meiste Zeug ist immer noch in PHP7 gültig. Weitere Informationen finden Sie im Blog von Matthias Geniar
Ich denke, das Einzige, was wir in Magento haben könnten, ist
preg_replace()
eval modifier, aber hoffentlich nicht.Außerdem hat Magento 1.9.2 mit einer aktualisierten TAF ausgeliefert, die Sie in dev finden können. Damit sollten Sie in der Lage sein, eine Reihe von Frontend-Tests auf PHP7 durchzuführen und anschließend das Protokoll zu untersuchen
quelle
Kein Kommentar zu Magento 1, aber Magento 2 hatte einige Probleme mit Klassennamen wie "String". Die Reparatur dauerte nicht lange, funktionierte aber nicht sofort. Ich gehe davon aus, dass Magento 2 repariert wird, aber es kann sein, dass es aufgrund anderer Prioritäten noch nicht repariert wurde.
quelle
Es ist fast fertig. Ich habe versucht, ein sauberes Magento 1.9.2.1 mit PHP 7 RC1 auszuführen, was zu einem sofortigen Absturz (schwerwiegender Fehler) von Magento führte. Nachdem dieses Problem behoben wurde, schien alles zu funktionieren, mit Ausnahme des Backends, bei dem ich mich nicht einloggen konnte. Später stellte sich heraus, dass es sich um ein sitzungsbezogenes Problem handelte, das behoben werden kann.
Kurz:
Der schwerwiegende Fehler kann behoben werden, indem
Mage_Core_Model_Layout
Zeile 555 von:$out .= $this->getBlock($callback[0])->$callback[1]();
in geändert wird
$out .= $this->getBlock($callback[0])->{$callback[1]}();
Die Sitzung Problem kann vorübergehend fixiert wird durch zwingende
Mage_Core_Model_Session_Abstract_Varien
und das UmschreibengetData
,setData
,unsetData
,addFullNames
Methoden, so überall dort , wo$this->_data
verwendet wurde, wird es ersetzt durch$_SESSION
.Wenn sich jemand für die Lösung interessiert, finden Sie sie hier .
quelle
Varien_File_Uploader
, siehe magento.stackexchange.com/questions/93066/…Magento2 ist bereit für PHP 7. Die Anpassung des Codes an PHP7 wurde vorgenommen und alle Änderungen sind im Entwicklungszweig verfügbar. Siehe Ausgabe auf GitHub
Außerdem erfordert die Unterstützung von PHP 7 in Magento1 inkompatible Änderungen abwärts und ich denke, dass dies nicht offiziell unterstützt wird.
quelle
Es gibt ein Problem damit, wie Magento die Gesamtsumme der Bestellung berechnet und die Rabatte anwendet. Dies stoppt auch die Paypal Express-Kaufabwicklung, da die Werbebuchungen nicht zur Gesamtsumme mit dem Rabatt addieren.
Das Problem scheint zu sein, dass das
Mage_Sales_Model_Config_Ordered::_compareTotals()
in PHP7 nicht wie in PHP5 funktioniert unduasort()
sich nun auf die transitiven Beziehungen für die Bestellung stützt, dies muss jedoch nicht für die Bestellsummen gelten.Versuchen Sie es mit: -
quelle
Dies ist meine Forschung, die ich mit Ihnen über die Inkompatibilitäten von Magento Php7 teilen möchte. Derzeit habe ich einige Stellen gefunden, an denen der Code aufgrund einer einheitlichen Variablensyntax fehlschlagen sollte.
Datei: app / code / core / Mage / ImportExport / Model / Export / Entity / Product / Type / Abstract.php
Methode: overrideAttribute
Datei: app / code / core / Mage / ImportExport / Model / Export / Entity / Customer.php
Methode: filterAttributeCollection
Datei: app / code / core / Mage / ImportExport / Model / Import / Uploader.php
Methode: _validateFile
Datei: app / code / core / Mage / Katalog / Modell / Produkt / Link / Api / V2.php
Methode: zuweisen
Datei: app / code / core / Mage / Katalog / Modell / Produkt / Link / Api / V2.php
Methode: aktualisieren
Datei: lib / Varien / File / Uploader.php
Methode: _validateFile
Datei: app / code / core / Mage / Core / Model / Layout.php
Methode: getOutput
quelle
Zusätzlich zu den anderen Antworten zu Magento 1:
Eine PHP 7 Inkompatibilität in
Zend_XmlRpc_Server
wurde in Zend Framework 1.12.12 behobenAlle Versionen vor CE 1.9.2.2 / EE 1.14.2.2 verwenden eine ältere Version von Zend Framework. Daher können Probleme auftreten, wenn Sie die XML-RPC-API von Magento verwenden.
quelle
Überprüfen Sie Dateien von inchoo, die in M1-kompatibel mit PHP 7 geändert wurden. Dies sind geringfügige Änderungen in wenigen Dateien, aber intelligente Arbeit von Inchoo. https://github.com/Inchoo/Inchoo_PHP7/tree/master/app/code/local/Inchoo/PHP7
quelle
Ich benutze Magento 2 CE Version 2.1.4 & Funktioniert einwandfrei.
magento \ app \ bootstrap.php
quelle
Kurze Antwort ist nein, tut es nicht. Magento CE 1.9.2.4 unterstützt nur PHP 5.4 und 5.5 offiziell. Und während PHP 5.6 es einwandfrei ausführt, sättigt es Protokolldateien mit einer Vielzahl von Warnmeldungen.
Lange Antwort ist, dass es relativ einfach ist, es so zu ändern, dass es PHP7 unterstützt. Viele Erweiterungen sind jedoch immer noch nicht PHP7-kompatibel, sodass Sie weitgehend alleine sind.
quelle
PHP 7.0 ist das Ende der Laufzeit ab der ersten Dezemberwoche 2018.
Ab diesem Beitrag unterstützt die aktuelle Version von Magento 2.2.3 (Release vom 20. Februar 2018) weder PHP 7.1 noch PHP 7.2.
Sie können die unterstützten Versionen überprüfen, indem Sie
app/bootstrap.php
in Ihrem Magento-Installationsordner nach folgendem Code suchen:Es scheint auch Probleme zu geben, bei
.htaccess
denen Apache 2.4 500 Fehler verursacht.Darüber hinaus enthält die enthaltene Composer-Datei nur Abhängigkeiten für PHP 5.5
quelle