Magento – für PHP Version 7 kompatibel machen

Wir haben aufgrund von Serveranpassungen gerade eine PHP-Versions-Umstellung gehabt. Es wurde von PHP-Version 5.6 A 7 umgestellt -ohne Unterstützung der alten Versionen.

Im ersten Augenblick zeigt Magento (Versión 1.9.1.1) dann nur noch dies:

Fatal error: Uncaught Error: Function name must be a string in /www/htdocs/app/code/core/Mage/Core/Model/Layout.php:555 Stack trace: #0 /www/htdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput() #1 /www/htdocs/app/code/core/Mage/Cms/Helper/Page.php(137): Mage_Core_Controller_Varien_Action->renderLayout() #2 /www/htdocs/app/code/core/Mage/Cms/Helper/Page.php(52): Mage_Cms_Helper_Page->_renderPage(Object(Mage_Cms_IndexController), ‘myone’) #3 /www/htdocs/app/code/core/Mage/Cms/controllers/IndexController.php(45): Mage_Cms_Helper_Page->renderPage(Object(Mage_Cms_IndexController), ‘myone’) #4 /www/htdocs/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Mage_Cms_IndexController->indexAction() #5 /www/htdocs/app/code/co in /www/htdocs/app/code/core/Mage/Core/Model/Layout.php on line 555

Erfreulicherweise kann dies (augenscheinlich) einfach behoben werden. Hierzu wird die Layout.php aus dem Ordner app/code/core/Mage/Core/Model in den Ordner app/code/local/Mage/Core/Model kopiert. Anschließend dann noch die Zeile

$out .= $this->getBlock($llamar de vuelta[0])->$llamar de vuelta[1]();

RASTREAR (LÍNEA 555 wie aus Fehlermeldung zu entnehmen) und durch

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

REPARAR.

Anschließend lief das Magento-Frontend wieder problemlos. Weitere Probleme sind frontend-seitig bislang nicht aufgefallen.

Beim Login in das Backend hatten wir noch das Problem, dass die Login-Seite nach Eingabe des Benutzernamens und des Passwortes nur neu geladen wurde. Die eingegebenen Daten waren weg und es gab auch keinen Hinweis auf ein falsches Passwort o.ä.

Hier scheint es sich um ein Problem mit der PHP 7 Version zu handeln, die angeblich bei PHP Version 7 RC3 behoben worden sein soll. Bei uns war es das noch nicht.

Um das Problem zu beheben, haben wir die Datei Session.php aus dem Ordner app/code/core/Mage/Admin/Model in das Verzeichnis app/code/local/Mage/Admin/Model kopiert und (bei uns) en línea 120 la línea de

$esta->renewSession();

comentada. Anschließend war auch der Backend-Login problemlos möglich.

Man kann übrigens schon vor der abschließenden Server-Umstellung simulieren wie sich Magento im Falle der Umstellung auf eine andere PHP-Version verhalten würde. Hierzu benötigt man nur Zugriff auf die .htaccess im Basis-Verzeichnis des Magento-Shops.

Standardmäßig ist hier schon (durch das # jeweils auskommentiert)

# Acción php5-cgi / cgi-bin / php5-cgi
# AddHandler php5-cgi php

in den ersten Zeilen vermerkt. Mit diesen kann man dann (je nach Hoster) die Version durch CGI-Verwendung umstellen.

Bei uns wäre es z.B. para el 7.0 Simulation

AddHandler cgi-.php php70

EX.

Es gibt aber z.B. TAMBIÉN

AddHandler application / x-httpd-php php7

was mglw. obras. Dies ist wie gesagt abhängig vom jeweiligen Hoster und kann durch Anfrage bei diesem oder teilweise auch durch einen Blick ins cPanel o.ä. in Erfahrung gebracht werden.

Se utiliza en la versión de Magento 1.9 Comentarios? Adiciones? Notas? Con alegría!

Publicado por Covos

DESDE 2009 He estado trabajando intensamente con Magento. Empecé con la creación y el funcionamiento de las tiendas B2C. Esto se extendió a través de mi trabajo en el sector de la logística. Esto dio lugar a sistemas especializados primera B2E. Hoy trabajo del día a día con una emocionante B2C, B2B- y proyectos B2E e informes en este blog sobre los desafíos y dan consejos de expertos.

3 pensamientos sobre “Magento – für PHP Version 7 kompatibel machen”

Deja un comentario

Su dirección de correo electrónico no será publicado. Los campos obligatorios están marcados *