致命错误:未捕获的TypeError:参数1传递给Mage_Core_Model_Design_Package :: getPackageByUserAgent()

问题描述 投票:0回答:1

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

致命错误:未捕获的类型错误:传递给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 / h ome1 / acapps / flagstuff.com / app / code / core在/home1/acapps/flagstuff.com/app/code/core/Mage/Core/Model/Design/Package.php在第586行

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

公共静态函数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个回答
0
投票

原来我需要更改此:

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

对此

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

此后,它就像一种魅力一样工作

© www.soinside.com 2019 - 2024. All rights reserved.