Frage

Magento 1.9.4 läuft nicht mit PHP 7, es wird der folgende Fehler angezeigt:

Fatal error: Uncaught Error: Function name must be a string in 
app\code\core\Mage\Core\Model\Layout.php:555 Stack trace: #0 
app\code\core\Mage\Core\Controller\Varien\Action.php(390): Mage_Core_Model_Layout->getOutput() #1 
app\code\core\Mage\Cms\Helper\Page.php(137): Mage_Core_Controller_Varien_Action->renderLayout() #2 
app\code\core\Mage\Cms\Helper\Page.php(52): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), 'home') #3 
app\code\core\Mage\Cms\controllers\IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), 'home') #4 
app\code\core\Mage\Core\Controller\Varien\Action.php(418): Mage_Cms_IndexController->indexAction() #5 
app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index') #6 
app\code\core\Mage\Core\Model\Layout.php on line 555
War es hilfreich?

Lösung

Es passiert, weil in PHP 7 Sie müssen klarstellen, dass Sie anrufen werden $callback Variable als Methode (Funktion).Die ursprüngliche Codezeile sieht also wie folgt aus (Datei app/code/core/Mage/Core/Model/Layout.php):

$out .= $this->getBlock($callback[0])->$callback[1]();

Damit es auf der neuesten PHP-Version funktioniert, müssen wir diesen Code durch diesen ersetzen:

$out .= $this->getBlock($callback[0])->{$callback[1]}();

Verweisen dieser Blog Für weitere Informationen.

Andere Tipps

Wenn Sie Ihre Magento 1.x-Website auf PHP7 ausführen möchten, müssen Sie einige kleine Tweaks in Ihren einige Magento 1.x-Dateien herstellen, um es ohne Probleme zu arbeiten.

Der größte Teil von Magento-Code ist in PHP 7 noch gültig, es gibt weitere Inkompatibilitäten unten:

1. Einheitliche variable Syntax-Probleme:

1.1 App / Code / Kern / Magier / Kern / Modell / Layout.php: 555

Diese Datei verursacht und der tödliche Fehler, der Magento stürzt. Überschreiben Sie die Datei und Ersetzen Sie

generasacodicetagpre.

mit

generasacodicetagpre.

1.2 App \ Code \ Core \ Mage \ ImportExport \ Modell \ Import \ Uploader.php: 135

Diese Dateieffekte magento CSV-Importeur. Überschreiben Sie die Datei und überschreiben Sie die Funktion _ValidateFile () und ersetzen Sie die Zeile 135 mit Ersetzen Sie

generasacodicetagpre.

mit

generasacodicetagpre.

1.3 App \ Code \ Core \ Mage \ ImportExport \ Modell \ Export \ Entity \ Produkt \ type \ abstract.php: 99

Diese Ausgabe Effektexportfunktionalität von Magento. Magento erstreckt sich drei Klassen aus der obigen abstrakten Klasse, so dass die Ursache des Fehlerursfalls in der Unterklasse die Linie # 99 in der oberen Klasse ist.

mage_importExport_model_export_entity_product_type_configurierbar Mage_importExport_model_export_entity_product_type_grouped. Mage_importExport_model_export_entity_product_type_simple

Wir müssen in unserem lokalen Code-Pool über drei Klassen überschreiben und die OverridEarttribute () -Funktion überschreiben, die Linie Nr. 99 ersetzen (). generasacodicetagpre.

mit

generasacodicetagpre.

1.4 App \ Code \ Core \ Mage \ ImportExport \ Modell \ Export \ Entity \ customer.php: 250

Diese Dateieffekte exportieren die Kundenfunktionalität. Überschreiben Sie die obige Datei und ändern Sie die Zeile # 250, wie unten gezeigt

generasacodicetagpre.

mit

generasacodicetagpre.

1.5 lib \ varien \ file \ uploader.php: 259

Das Hochladen von Datei funktioniert nicht. Magento erweitert Mage_Core_MODEL_FILE_ULPLAADER aus der oberen Klasse, sodass wir diese Klasse überschreiben und _ValidateFile () umschreiben (), die die Funktion ersetzen soll. generasacodicetagpre.

mit

generasacodicetagpre.

2. Typ Casting-Ausgabe

2.1 App \ Code \ Core \ Mage \ Core \ Modell \ Resource \ Session.php: 218

Magento-Sitzungen funktionieren nicht an PHP 7, also funktioniert der Benutzer-Login nicht. Die Lese-Funktion ($ SESSID) sollte eine Zeichenfolge zurückgeben, sodass die Renditringvariable wie unten angegeben ist

generasacodicetagpre.

mit

generasacodicetagpre.

3. Falsche großartige Gesamtsumme

Falsche Summen sind auf eine falsche Sortierreihenfolge des Zwischensummens, Rabatt, Versand usw. zurückzuführen Korrigieren Sie die Sortierreihenfolge, indem Sie eine Erweiterung erstellen und unter Code in config.xml der Erweiterung setzen

generasacodicetagpre.

Hier ist der ursprüngliche Bezug auf das, was ich oben gepostet habe: http://scriptbaker.com/tag/magento-1-9/

Wenn Sie keine Abfrage in Ihrem Code finden können, sodass dies von Magento abgedeckt wird, und wie ich es gesagt habe, ist der größte Teil des Codes gültig, sodass Sie es einfach ignorieren. Ich glaube, das kann alles Ihre Frage beantworten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top