Warning: array_key_exists() expects parameter 2 to be array, null given in app/code/core/Mage/Captcha/Model/Observer.php on line 166

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
  • Тема закрыта
#1 Дарья Головина
  • Группа: Клиент
  • Сообщений: 120
  • Регистрация: 09.06.2014

30.06.2014 09:40

После установки сборки при входе в Magento Connect
Прикрепленное изображение: 10.jpg

открывается страница ввода логин/пароль. Ввожу их и появляется ошибка:
Warning: array_key_exists() expects parameter 2 to be array, null given in app/code/core/Mage/Captcha/Model/Observer.php on line 166
Прикрепленное изображение: 11.jpg

Ругается на строку
Прикрепленное изображение: 12.jpg

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

30.06.2014 12:17

Это известный дефект Magento Community Edition: «Warning: array_key_exists() expects parameter 2 to be array, null given in app/code/core/Mage/Captcha/Model/Observer.php on line 166».

Учитывая, что этому дефекту уже больше года, видимо, его уже устранили в свежих версиях Magento Community Edition.

У меня на Magento Community Edition 1.9.0.1 с последней версией Российской сборки Magento этот дефект не воспроизводится, другие версии не проверял, но раньше сам никогда с этим дефектом не сталкивался, видимо, он связан с какими-то редкими настройками сервера.

#3 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

30.06.2014 12:46

Сейчас посмотрел программный код: данный дефект действительно устранён в свежих версиях Magento Community Edition, причём не только в версии
1.9.0.1, а во всех версиях Magento Community Edition, начиная с версии 1.8.0.1.
Там строка 165 файла app/code/core/Mage/Captcha/Model/Observer.php стала такой:
$loginParams = Mage::app()->getRequest()->getPost('login', array());

то есть, в отличие от Magento Community Edition 1.7.0.2 и более ранних версий, при вызове Mage::app()->getRequest()->getPost в данной точке программы стал передаваться второй параметр array().
Это решает проблему.

Таким образом, устранить проблему можно любым из следующих способов:
  • заменить в данной точке программы строку
    $loginParams = Mage::app()->getRequest()->getPost('login');

    на строку
    $loginParams = Mage::app()->getRequest()->getPost('login', array());

  • обновить Magento Community Edition до версии не ниже 1.8.0.1

Оба способа для устранения проблемы равноценны, потому что при обновлении Magento Community Edition до версии не ниже 1.8.0.1 данная строка всё равно заменится именно таким образом, который указан выше.

Поделиться темой: