«Неверный ключ формы. обновите страницу »- не могу войти в админку

18

Я регулярно захожу на свой сайт, чтобы убедиться, что он работает, и замечаю, что изображения для продуктов не появляются, думая, что это проблема с индексацией кеша. Я попытался войти в админ-панель и получил ошибку:

"неверный ключ формы. обновите страницу"

или

Другими симптомами являются то, что клиенты не могут добавлять товары в корзину и крайне низкая производительность.

В логах ошибок нет (/ var / logs)

Какие дополнительные шаги я должен выполнить, чтобы решить эту проблему?

SR_Magento
источник

Ответы:

48

Это также происходит, если домен cookie в « Система»> «Конфигурация»> «Интернет»> «Cookies» отличается от фактического домена сайта.

Чтобы удалить настройку без доступа к панели администратора:

  1. используйте следующий SQL-запрос на консоли MySQL или в клиенте, таком как phpMyAdmin:

    DELETE FROM core_config_data WHERE path='web/cookie/cookie_domain';
  2. очистить кеш Если вы используете файловый кеш-сервер по умолчанию, удалите все каталоги, указанные ниже var/cache.

Затем, как только вы сможете снова войти в систему, задайте правильный домен cookie для каждого веб-сайта или магазина (например .example.com, например, например.com, www.example.com и все другие субдомены).

Если вы используете n98-magerun (и вам следует!), То же самое можно сделать с помощью:

n98-magerun config:delete web/cookie/cookie_domain
n98-magerun cache:clean config
Фабиан Шменглер
источник
Здравствуйте, @fschmengler. Пожалуйста, добавьте больше подробностей о том, как проверить этот параметр в phpmyadmin, потому что пользователь не может войти в админ-панель, а некоторые разработчики, которые являются новичками в разработке Magento, не знают, где проверить такие настройки в базе данных. Извините, но только за помощь новых участников :)
Мохит Кумар Арора
@MohitKumarArora вы правы, я обновил ответ
Фабиан Шменглер
Теперь я проголосовал. :)
Мохит Кумар Арора
N98 способ работает фантастически. Спасибо за информацию.
Энди Джонс
@FabianSchmengler, я проверил core_config_data, и это правильное значение для моего сайта. Мне все еще нужно пройти все шаги, которые вы предоставили? Ваш подход все еще будет работать в этом случае?
datasn.io
18

Я публикую вопрос / ответ, потому что я не смог найти что-то подходящее.

Проблема заключалась в том, что диск, на котором находится моя установка magento, был переполнен. Я освободил немного места, очистил / var / session и / var / cache и все вернулось на круги своя.

SR_Magento
источник
1
Предупреждение: удаление var/sessionприведет к выходу всех из системы и очистке всех гостевых тележек. Смотрите здесь решение, которое удаляет только старые сессии: magento.stackexchange.com/a/58167/243
Фабиан Шменглер,
@fschmengler да, но вы действительно хотите рискнуть с сеансами, которые не были правильно созданы с самого начала? Когда я проверил / var / session, были все виды файлов 0kb, что не нормально.
SR_Magento
1
Абсолютно первое, что нужно проверить. Я ломал голову над этим часами. Благодарность!
Брайант Джексон
Для меня это было место на диске. Я узнал после попытки git pull, так как это не удалось из-за ошибки, связанной с дисковым пространством.
Дамодар Башял
@SR_Magento Сэр, я удалял папку кеша и папку сеанса так много раз, что она работает только в течение некоторого времени, после того, как возникает одна и та же проблема
Амареш Тивари
3

Есть 3 решения:

  1. Используйте эти команды в phpmyadmin

    DELETE FROM core_config_data WHERE path = 'web / cookie / cookie_domain';

    DELETE FROM core_config_data WHERE path = 'web / cookie / cookie_path';

Теперь попробуйте войти.

2. Удалите все в папке var и проверьте, работает ли он.

3.Замените файл .htaccess с примером файла .htaccess, а затем попробуйте войти в систему администратора.

Надеюсь, это поможет вам.

Lokranjan
источник
1

Сначала можно проверить еще одну возможную, несколько очевидную проблему: если ваш сайт использует SSL, убедитесь, что вы не используете протокол http для своей страницы администратора; Вы должны использовать https . например, https://example.com/admin

voxoid
источник
1

В моем случае проблема, похоже, заключается в том, что я создал администратора с помощью n98-magerun с пользователем, который не может писать в magentofolder / var, и вместо этого использовал резервную папку / tmp / magento.

Я просто удалил пользователя с правами администратора и выполнил sudo -iu OTHERUSER(пользователь, которому принадлежит папка magento) и n98-magerun admin:user:createснова побежал, чтобы создать моего пользователя.


ОБНОВЛЕНИЕ: В другом случае, админ URL посещался без www. синтаксис, и настройки cookie использовали www. Просто ставлю www. в админке URL решил проблему. ;)

Рикардо Мартинс
источник
Не должно ли это быть admin:user:create?
sr9yar
1
@ sr9yar Нету - это Magento2 - это M1
treyBake
0

Наряду с вышеуказанным этапом очистки кэша мне также пришлось следовать приведенной ниже статье и установить информацию о данных сеанса по правильному пути, выполнив следующие шаги

Ссылка на статью

/programming/26123081/failed-to-write-session-data-magento

Я исправил это, изменив session.save_path, чтобы поместить его в виртуальную машину.

Изменить файл приложения / etc / local.xml

заменено на ниже

Тогда это начало работать. Иногда вы не можете точно определить проблему, поэтому важно включить ведение журнала ошибок. Включите это, обратившись к следующей статье

https://www.thecreativedev.com/how-to-enable-system-log-and-errorswarning-in-magento/

Абхишек Чоула
источник
0

Очистить куки и кеш. Откройте панель администратора в режиме инкогнито.

Абдул Рафай
источник
-3

Эта известная проблема обычно возникает после применения патча SUPEE-7405, включенного в выпуск Magento 1.9.2.3. Это можно решить, добавив приведенный ниже код в файл: app / code / local / Mage / Core / Model / Session.php

public function validateFormKey()
{
    if (!($formKey = $_REQUEST['form_key']) || $formKey != $this->getFormKey()) {
        return false;
    }
    return true;
}

Этот файл может не существовать в вашем репозитории, поэтому скопируйте его app/code/core/Mage/Core/Model/Session.phpи вставьте в него. app/code/local/Mage/Core/Model/Session.phpПосле этого добавьте указанную выше функцию в файл, поскольку он может отсутствовать в основном файле.

Также очистите кеш вашего браузера и куки. Очистить все файлы в Magento var/cacheи var/sessionсодержимое папок. Затем войдите в вашу админ-панель.

InfoBeans
источник
Эмм ... не лучше ли было бы добавить вывод блока ключей формы в переопределенный шаблон adminhtml? (Таким образом, защита CSRF будет работать так, как задумано).
Люк А. Лебер
2
Никогда не следует редактировать основные файлы.
Макс