“Chave de formulário inválida. atualize a página "- não é possível acessar o painel de administração

18

Eu visito regularmente meu site para garantir que funcione e notei que as imagens dos produtos não estavam aparecendo, pensando que era um problema com o cache de indexação. Tentei fazer login no painel de administração e recebi o erro:

"chave de formulário inválida. atualize a página"

ou

Outros sintomas são os clientes não puderam adicionar produtos ao carrinho e desempenho extremamente lento.

Não há erros nos logs (/ var / logs)

Quais etapas adicionais devo executar para resolver esse problema?

SR_Magento
fonte

Respostas:

48

Isso também acontece se o domínio do cookie em Sistema> Configuração> Web> Cookies for diferente do domínio do site real.

Para remover a configuração sem acesso ao painel de administração:

  1. use a seguinte consulta SQL no console do MySQL ou em um cliente como phpMyAdmin:

    DELETE FROM core_config_data WHERE path='web/cookie/cookie_domain';
  2. limpe o cache. Se você estiver usando o back-end de cache baseado em arquivo padrão, exclua todos os diretórios abaixo var/cache.

Assim que você puder fazer login novamente, defina o domínio de cookie correto para cada site ou loja (exemplo: .example.compor exemplo.com, www.exemplo.com e todos os outros subdomínios)

Se você estiver usando o n98-magerun (e você deve!), O mesmo pode ser feito com:

n98-magerun config:delete web/cookie/cookie_domain
n98-magerun cache:clean config
Fabian Schmengler
fonte
Olá @fschmengler, adicione mais detalhes sobre como verificar essa configuração no phpmyadmin, porque o usuário não pode fazer login no painel de administração e alguns desenvolvedores que são novos no desenvolvimento do Magento não sabem onde verificar essas configurações no banco de dados. Desculpe, mas apenas para ajuda de novos membros :)
Mohit Kumar Arora
@MohitKumarArora você está certo, eu atualizei a resposta #
Fabian Schmengler
Agora eu votei. :)
Mohit Kumar Arora
maneira n98 funciona fantástico. Obrigado pela informação.
18717 Andy
@FabianSchmengler, verifiquei o core_config_data e é o valor correto para o meu site. Ainda preciso seguir todas as etapas que você forneceu? Sua abordagem ainda funcionaria nesse caso?
datasn.io
18

Estou postando a pergunta / resposta porque não consegui encontrar nada relevante.

O problema era que a unidade em que minha instalação do magento reside estava cheia. Libertei um pouco de espaço, limpei o / var / session e / var / cache e tudo voltou ao normal.

SR_Magento
fonte
1
Aviso: a exclusão var/sessiondesconecta todos e limpa todos os carrinhos de convidados. Veja aqui uma solução que remove apenas sessões antigas: magento.stackexchange.com/a/58167/243
Fabian Schmengler
@fschmengler sim, mas você realmente quer se arriscar com sessões que não foram criadas corretamente para começar? Quando verifiquei a / var / session, havia todos os tipos de arquivos 0kb, o que não é normal.
SR_Magento 14/09
1
Absolutamente a primeira coisa a verificar. Estive pensando nisso por horas. Obrigado!
Bryant Jackson
Para mim, era espaço em disco. Eu descobri depois de tentar o git pull, pois ele falhou com o erro relacionado ao espaço em disco.
precisa saber é o seguinte
@SR_Magento Sir I foi removido pasta cache e pasta sessão tantos vez é só funciona para algum tempo depois de algum tempo há uma mesma questão
Amaresh Tiwari
3

Existem 3 soluções:

  1. Use estes comandos no phpmyadmin

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

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

Agora tente fazer o login.

2.Exclua tudo na pasta var e verifique se funciona.

3. Substitua o arquivo .htaccess pelo arquivo .htaccess de amostra e tente fazer login no administrador.

Espero que ajude você.

Lokranjan
fonte
1

Outro problema possível, um tanto óbvio, a ser verificado primeiro: se seu site usa SSL, verifique se você não está usando o protocolo http para sua página de administrador; você deveria estar usando https . por exemplo, https://example.com/admin

voxoid
fonte
1

No meu caso, o problema parece ser porque eu criei o usuário admin usando o n98-magerun com um usuário que não pode escrever no magentofolder / var e usei a pasta de fallback / tmp / magento.

Acabei de excluir meu usuário administrador sudo -iu OTHERUSERe executei um (usuário que possui a pasta magento) e corri n98-magerun admin:user:createnovamente para criar meu usuário.


ATUALIZAÇÃO: Em outro caso, o URL do administrador está sendo visitado sem www. sintaxe e as configurações de cookies estavam usando www. Apenas colocando o www. no URL do administrador resolveu o problema. ;)

Ricardo Martins
fonte
Isso não deveria ser admin:user:create?
Sr9yar
1
@ sr9yar nope - isso é Magento2 - esse é M1
treyBake
0

Junto com a etapa acima de limpar o cache, eu também tive que seguir o artigo abaixo e definir as informações dos dados da sessão no caminho correto, seguindo as etapas abaixo

Artigo de referência

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

Corrigi-o alterando o session.save_path para colocá-lo na VM.

Mude o arquivo app / etc / local.xml

substituído por abaixo

Então começou a funcionar. Também às vezes você não pode realmente dizer o problema; portanto, é importante ativar o log de erros. Habilite isso consultando o seguinte artigo

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

Abhishek Chowla
fonte
0

Limpar cookies e cache. Abra o painel de administração no modo de navegação anônima.

Abdul Rafay
fonte
-3

Este problema é conhecido geralmente após a aplicação do patch SUPEE-7405 incluído no Magento 1.9.2.3. Pode ser resolvido adicionando o código abaixo no arquivo - app / code / local / Mage / Core / Model / Session.php

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

Esse arquivo pode não existir no seu repositório, então copie-o app/code/core/Mage/Core/Model/Session.phpe cole-o. app/code/local/Mage/Core/Model/Session.phpDepois disso, adicione a função acima no arquivo, pois pode estar ausente no arquivo principal.

Limpe também o cache e os cookies do navegador. Limpe todos os arquivos no Magento var/cachee o var/sessionconteúdo das pastas. Então entre no seu painel de administração.

InfoBeans
fonte
Ermm ... não seria uma solução melhor adicionar a saída do bloco de chaves do formulário ao modelo de adminhtml substituído? (Dessa forma, a proteção CSRF funcionará como pretendido).
Luke A. Leber
2
Nunca se deve editar arquivos principais.
Max