【问题标题】:Fatal error: Uncaught TypeError: Argument 1 passed to Mage_Core_Model_Design_Package::getPackageByUserAgent()致命错误:未捕获的 TypeError:参数 1 传递给 Mage_Core_Model_Design_Package::getPackageByUserAgent()
【发布时间】:2020-02-15 13:30:58
【问题描述】:

将我的 magento 1.9 安装从旧服务器移动到新服务器后,我收到 500 错误。旧服务器运行的是 php5,而这个是 7。我现在收到以下错误,我知道我必须更改一些代码,但我不确定是什么:

致命错误:未捕获的 TypeError:传递给 Mage_Core_Model_Design_Package::getPackageByUserAgent() 的参数 1 必须是数组类型,给定对象,在 /home1/acapps/flagstuff.com/app/code/core/Mage/Core/ 中调用Model/Design/Package.php 位于第 576 行,定义在 /home1/acapps/flagstuff.com/app/code/core/Mage/Core/Model/Design/Package.php:586 堆栈跟踪:#0 /home1/acapps /flagstuff.com/app/code/core/Mage/Core/Model/Design/Package.php(576): Mage_Core_Model_Design_Package::getPackageByUserAgent(Object(Zend_Log), 'design/theme/te...') #1 / home1/acapps/flagstuff.com/app/code/core/Mage/Core/Model/Design/Package.php(262): Mage_Core_Model_Design_Package->_checkUserAgentAgainstRegexps('design/theme/te...') #2 /home1/ acapps/flagstuff.com/app/code/core/Mage/Core/Model/Design/Package.php(287): Mage_Core_Model_Design_Package->getTheme('template') #3 /home1/acapps/flagstuff.com/app/code /core/Mage/Core/Model/Design/Package.php(420): Mage_Core_Model_Design_Package->updateParamDefaults(Array) #4 / home1/acapps/flagstuff.com/app/code/core 在 /home1/acapps/flagstuff.com/app/code/core/Mage/Core/Model/Design/Package.php 586 行

这是从 Package.php 第 586 行开始的代码

public static function getPackageByUserAgent(array $rules, $regexpsConfigPath = 'path_mock')

{
        foreach ($rules as $rule) {

            if (!empty(self::$_regexMatchCache[$rule['regexp']][$_SERVER['HTTP_USER_AGENT']])) {

                self::$_customThemeTypeCache[$regexpsConfigPath] = $rule['value'];

                return $rule['value'];

            }

            $regexp = '/' . trim($rule['regexp'], '/') . '/';

            if (@preg_match($regexp, $_SERVER['HTTP_USER_AGENT'])) {
                self::$_regexMatchCache[$rule['regexp']][$_SERVER['HTTP_USER_AGENT']] = true;

                self::$_customThemeTypeCache[$regexpsConfigPath] = $rule['value'];
                return $rule['value'];
            }
        }

        return false;
    }

【问题讨论】:

    标签: magento-1.9 php-7


    【解决方案1】:

    原来我需要改变这个:

    public static function getPackageByUserAgent(array $rules, $regexpsConfigPath = 'path_mock')

    到这里

    public static function getPackageByUserAgent($rules, $regexpsConfigPath = 'path_mock')

    在那之后,它就像一个魅力

    【讨论】:

      猜你喜欢
      • 2018-01-21
      • 1970-01-01
      • 2014-11-11
      • 2012-03-13
      • 2019-11-09
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多