【问题标题】: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\Model\Layout.php:555 中的字符串 堆栈跟踪:#0
【发布时间】:2016-06-07 07:20:57
【问题描述】:

我在从 XAMPP (localhost/magento) 访问 Magento 文件夹时遇到这些错误:

致命错误:未捕获的错误:函数名称必须是字符串 C:\xampp\htdocs\em0126\app\code\core\Mage\Core\Model\Layout.php:555 堆栈跟踪:#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 第 555 行

【问题讨论】:

    标签: magento phpmyadmin xampp


    【解决方案1】:

    将第 555 行更改为:

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

    它有效。但有一件事我不确定这是否真的是一个 php7。我在我的网站上使用相同的文件和配置在同一台服务器上运行它,并且它可以在不更改该行的情况下正常工作。

    【讨论】:

    • 其他站点可能使用 PHP5,而不是 PHP7 :)
    【解决方案2】:

    由于 PHP7

    不建议编辑核心文件。我们将覆盖它。

    将此文件app/code/core/Mage/Core/Model/Layout.php复制到app/code/local/Mage/Core/Model/Layout.php

    更改app/code/local/Mage/Core/Model/Layout.php 文件中的代码(第 555 行)

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

    收件人:

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

    【讨论】:

    • 如果不存在,您可以创建“本地”文件夹和其他子目录。
    • 谢谢真的帮助了我。我浪费了一整天的时间来修复,但这对我有帮助!非常感谢!
    【解决方案3】:

    这是一个 php7 问题,因为当我从 5.6 升级到 7.0 时出现此错误。为了修复它,我编辑了核心文件(希望很快会出现补丁),就像之前在其他答案中提到的那样或如下所示:

    转到 app\code\core\Mage\Core\Model\Layout.php 第 555 行

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

    【讨论】:

      【解决方案4】:

      转到 app\code\core\Mage\Core\Model\Layout.php 第 555 行并

       change $callback[1] to {$callback[1]}
      

      【讨论】:

        【解决方案5】:

        你的解决方案

        致命错误:未捕获的错误:函数名称必须是...中的字符串 app\code\core\Mage\Core\Model\Layout.php:555 ...

        这个错误很容易修复,因为问题出在下面一行:

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

        应该是:

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

        在下面给出的链接中找到您的详细解决方案 http://www.code007.ro/making-work-magento-with-php-7-rc1/

        【讨论】:

        • 它工作正常,什么时候添加layout.php $out .= $this->getBlock($callback[0])->{$callback[1]}();
        • 为我工作,可能是 PHP7 问题
        • 肯定是php7问题+1
        • 效果很好,谢谢!我不知道为什么默认 Magento 安装中仍然存在该错误行。把我打败了。
        • 谢谢.. 这是一个很棒的快速修复:)
        猜你喜欢
        • 2011-11-03
        • 2021-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-04
        • 1970-01-01
        • 1970-01-01
        • 2019-02-25
        相关资源
        最近更新 更多