40

I am facing these errors while accessing Magento folder from XAMPP (localhost/magento):

Fatal error: Uncaught Error: Function name must be a string in C:\xampp\htdocs\em0126\app\code\core\Mage\Core\Model\Layout.php:555 Stack trace: #0 C:\xampp\htdocs\em0126\app\code\core\Mage\Core\Controller\Varien\Action.php(390): Mage_Core_Model_Layout->getOutput() #1 C:\xampp\htdocs\em0126\app\code\core\Mage\Install\controllers\WizardController.php(120): Mage_Core_Controller_Varien_Action->renderLayout() #2 C:\xampp\htdocs\em0126\app\code\core\Mage\Core\Controller\Varien\Action.php(418): Mage_Install_WizardController->beginAction() #3 C:\xampp\htdocs\em0126\app\code\core\Mage\Core\Controller\Varien\Router\Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('begin') #4 C:\xampp\htdocs\em0126\app\code\core\Mage\Core\Controller\Varien\Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http)) #5 > C:\xampp\htdocs\em0126\app\code\core\Mage\Core\Model\App.php(354): Mage_Core_Controller_Varien_Front->dispatch() #6 C:\xampp\htdocs\em0126\app\Mage.php(683): Mage_Core_Mo in C:\xampp\htdocs\em0126\app\code\core\Mage\Core\Model\Layout.php on line 555

twernt
  • 20,271
  • 5
  • 32
  • 41
Sher Ali
  • 523
  • 1
  • 4
  • 10

5 Answers5

110

Your solution

Fatal error: Uncaught Error: Function name must be a string in ... app\code\core\Mage\Core\Model\Layout.php:555 ...

This error was easy to fix because the problem was in the following line:

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

Instead it should be:

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

find your detail solution here on below given link http://www.code007.ro/making-work-magento-with-php-7-rc1/

Sevle
  • 3,109
  • 2
  • 19
  • 31
Abhishek Baranwal
  • 1,201
  • 1
  • 8
  • 2
28

Its due to PHP7

It's not recommended to edit the core file. We will override it.

Copy this file app/code/core/Mage/Core/Model/Layout.php into app/code/local/Mage/Core/Model/Layout.php

Change code in app/code/local/Mage/Core/Model/Layout.php file (line # 555)

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

To:

$out .= $this->getBlock($callback[0])->{$callback[1]}();
Nadeem0035
  • 3,757
  • 1
  • 24
  • 36
20

Changed the line 555 to:

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

It works. But one thing I'm not sure of if this is really a php7. I'm running this on my website with same files and configurations on the same server and it's working with no issues without changing that line.

MsC
  • 199
  • 2
  • 6
12

Go to app\code\core\Mage\Core\Model\Layout.php line no 555 and

 change $callback[1] to {$callback[1]}
Pankaj Upadhyay
  • 2,114
  • 21
  • 22
7

it is a php7 issue since when i upgraded from 5.6 to 7.0 i got this error. to fixe it i edited core file (hope a patch will come soon) either like mentionned in other ansewers before or like below:

Go to app\code\core\Mage\Core\Model\Layout.php line no 555

$method = $callback[1];
$out .= $this->getBlock($callback[0])->$method();
Mohamed23gharbi
  • 1,710
  • 23
  • 28