Неустранимая ошибка: Uncaught TypeError: Аргумент 1 передан в Mage_Core_Model_Design_Package :: getPackageByUserAgent () - PullRequest
0 голосов
/ 18 октября 2019

Я получил ошибку 500, как только перенес установку magento 1.9 со старого сервера на новый. На старом сервере работал php5, а этот - на 7. Теперь я получаю следующую ошибку, и я знаю, что должен изменить часть кода, но я не уверен, что:

Неустранимая ошибка: Uncaught TypeError: Аргумент 1 передан в Mage_Core_Model_Design_Package :: getPackageByUserAgent () должен иметь массив типов, данный объект, вызываемый в /home1/acapps/flagstuff.com/app/code/core/Mage/Core/Model/Design/Page.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

Это код, который начинается в строке 586 Package.php

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;
    }

1 Ответ

0 голосов
/ 18 октября 2019

Оказывается, мне нужно было изменить это:

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

на это

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

, после этого оно работало какочарование

...