{"id":2686,"date":"2017-01-10T14:28:00","date_gmt":"2017-01-10T13:28:00","guid":{"rendered":"http:\/\/www.commercers.com\/blog\/?p=2686"},"modified":"2017-01-17T16:12:51","modified_gmt":"2017-01-17T15:12:51","slug":"magento-fuer-php-version-7-kompatibel-machen","status":"publish","type":"post","link":"https:\/\/www.commercers.com\/blog\/magento-fuer-php-version-7-kompatibel-machen\/","title":{"rendered":"Magento &#8211; f\u00fcr PHP Version 7 kompatibel machen"},"content":{"rendered":"<p>Wir haben aufgrund von Serveranpassungen gerade eine PHP-Versions-Umstellung gehabt. Es wurde von PHP-Version 5.6 auf 7 umgestellt -ohne Unterst\u00fctzung der alten Versionen.<\/p>\n<p>Im ersten Augenblick zeigt Magento (Version 1.9.1.1) dann nur noch dies:<\/p>\n<p><strong>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-&gt;getOutput() #1 \/www\/htdocs\/app\/code\/core\/Mage\/Cms\/Helper\/Page.php(137): Mage_Core_Controller_Varien_Action-&gt;renderLayout() #2 \/www\/htdocs\/app\/code\/core\/Mage\/Cms\/Helper\/Page.php(52): Mage_Cms_Helper_Page-&gt;_renderPage(Object(Mage_Cms_IndexController), &#8216;myone&#8217;) #3 \/www\/htdocs\/app\/code\/core\/Mage\/Cms\/controllers\/IndexController.php(45): Mage_Cms_Helper_Page-&gt;renderPage(Object(Mage_Cms_IndexController), &#8216;myone&#8217;) #4 \/www\/htdocs\/app\/code\/core\/Mage\/Core\/Controller\/Varien\/Action.php(418): Mage_Cms_IndexController-&gt;indexAction() #5 \/www\/htdocs\/app\/code\/co in \/www\/htdocs\/app\/code\/core\/Mage\/Core\/Model\/Layout.php on line 555<\/strong><\/p>\n<p>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\u00dfend dann noch die Zeile<\/p>\n<pre class=\"lang:default decode:true \">$out .= $this-&gt;getBlock($callback[0])-&gt;$callback[1]();<\/pre>\n<p>suchen (Zeile 555 wie aus Fehlermeldung zu entnehmen) und durch<\/p>\n<pre class=\"lang:default decode:true \">$out .= $this-&gt;getBlock($callback[0])-&gt;{$callback[1]}();<\/pre>\n<p>ersetzen.<\/p>\n<p>Anschlie\u00dfend lief das Magento-Frontend wieder problemlos. Weitere Probleme sind frontend-seitig bislang nicht aufgefallen.<\/p>\n<p>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.\u00e4.<\/p>\n<p>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.<\/p>\n<p>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) in Zeile 120 die Zeile<\/p>\n<pre class=\"lang:default decode:true \">$this-&gt;renewSession();<\/pre>\n<p>auskommentiert. Anschlie\u00dfend war auch der Backend-Login problemlos m\u00f6glich.<\/p>\n<p>Man kann \u00fcbrigens schon vor der abschlie\u00dfenden Server-Umstellung simulieren wie sich Magento im Falle der Umstellung auf eine andere PHP-Version verhalten w\u00fcrde. Hierzu ben\u00f6tigt man nur Zugriff auf die .htaccess im Basis-Verzeichnis des Magento-Shops.<\/p>\n<p>Standardm\u00e4\u00dfig ist hier schon (durch das # jeweils auskommentiert)<\/p>\n<pre class=\"lang:default decode:true \"># Action php5-cgi \/cgi-bin\/php5-cgi\r\n# AddHandler php5-cgi .php<\/pre>\n<p>in den ersten Zeilen vermerkt. Mit diesen kann man dann (je nach Hoster) die Version durch CGI-Verwendung umstellen.<\/p>\n<p>Bei uns w\u00e4re es z.B. f\u00fcr die 7.0 Simulation<\/p>\n<pre class=\"lang:default decode:true \">AddHandler php70-cgi .php<\/pre>\n<p>gewesen.<\/p>\n<p>Es gibt aber z.B. auch<\/p>\n<pre class=\"lang:default decode:true \">AddHandler application\/x-httpd-php7 .php<\/pre>\n<p>was mglw. funktioniert. Dies ist wie gesagt abh\u00e4ngig vom jeweiligen Hoster und kann durch Anfrage bei diesem oder teilweise auch durch einen Blick ins cPanel o.\u00e4. in Erfahrung gebracht werden.<\/p>\n<p>Genutzt in Magento Version 1.9 Kommentare? Erg\u00e4nzungen? Hinweise? Gerne!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir haben aufgrund von Serveranpassungen gerade eine PHP-Versions-Umstellung gehabt. Es wurde von PHP-Version 5.6 auf 7 umgestellt -ohne Unterst\u00fctzung der alten Versionen. Im ersten Augenblick zeigt Magento (Version 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-&gt;getOutput() #1 \/www\/htdocs\/app\/code\/core\/Mage\/Cms\/Helper\/Page.php(137): Mage_Core_Controller_Varien_Action-&gt;renderLayout() #2 \/www\/htdocs\/app\/code\/core\/Mage\/Cms\/Helper\/Page.php(52):&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2686","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/posts\/2686","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/comments?post=2686"}],"version-history":[{"count":0,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/posts\/2686\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/media?parent=2686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/categories?post=2686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.commercers.com\/blog\/wp-json\/wp\/v2\/tags?post=2686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}