Qual é a causa do erro "O controlador frontal atingiu 100 iterações de correspondência do roteador"?

14

Como desenvolvedor do Magento, já enfrentei esse problema várias vezes, sei que é um problema de configuração incorreta quando ocorre que alguns módulos não são carregados, nem seus roteadores, causando o erro. Na maioria das vezes, é resolvido sem ação, outras vezes você pode liberar o cache

Eu li vários posts sobre isso, tentando depurar colocando algum código extra no controlador Front do Magento core app/code/core/Mage/Core/Controller/Varien/Front.php, mas no final isso mostra apenas quais roteadores de módulo estão ausentes, e não por que eles não estão sendo carregados. Sempre que ocorre, tento procurar quais URLs estão fornecendo o erro, mas essas são informações inúteis, como o rastreamento de código. É sempre o mesmo

Talvez seja causado por conflitos de módulo? Talvez seja alguma tarefa cron fazendo algo errado? Talvez algum código errado nas versões mais antigas do Magento? O problema é que esse problema não ocorre desde a versão 1.7 (ou, se ocorrer, será totalmente esporádico). Encontrei algumas diferenças de código no fluxo principal, como

Mage::register('application_params', $params);

No método run () de app/code/core/Mage/Core/Model/App.phpou o

$this->_shouldSkipProcessModulesUpdates()

verifique no método _initModules () ...

Eu quero acreditar que deveria haver alguém que encontrou definitivamente a causa. Alguma dica?

Raul Sanchez
fonte
1
Você já referenciou isso? github.com/convenient/…
Tim Hallman
1
O cartaz do mesmo artigo foi capaz de corrigir seu problema, substituindo Mage_Core_Model_Confige forçando$_useCache = false
Tim Hallman
1
Depois de ler o artigo inteiro, acho que você deve postar isso como a resposta certa para minha pergunta, para que outros usuários possam lê-lo. Obrigado
Raul Sanchez

Respostas:

12

Parece que você está enfrentando um bug de configuração do Magento.

Há uma excelente redação com solução aqui .

Nesse artigo, o autor conseguiu corrigir o erro, substituindo Mage_Core_Model_Confige forçando $_useCache = falseao regenerar a configuração.

Tim Hallman
fonte
4
Droga! Nunca me para colher o representante para esse artigo, outras pessoas sempre ligar para ele em primeiro lugar;)
Luke Rodgers
3
Muito bom artigo @LukeRodgers!
Tim Hallman 28/05
5
Eu só gostaria de comentar e dizer que Magento aceitaram isso como uma correção para o problema com SUPEE-4755 github.com/convenient/...
Luke Rodgers
2
Eu também adicionei outro patch. Não é tão bom, mas discutido aqui. github.com/convenient/…
Luke Rodgers
Estou enfrentando esse problema no Magento 2 CE versão 2.1.0. Deve ser corrigido corretamente porque é um problema antigo?
Ankit Shah
6

Verifique as definições de configuração do Magento URL padrão sem rota em

Sistema> Configurações> Web> Páginas Padrão
. Deve ser definido o valor padrão cms / index / noRoute . Verifique o valor específico da loja, bem como se o valor padrão foi substituído aqui. O Magento pode entrar em um loop infinito até atingir o limite de 100 iterações, se não estiver definido corretamente.

Se você usa o Magerun , execute este comando.

magerun config:set cms/index/noRoute no-route

Eu encontrei a solução aqui, este é o problema no meu caso. Você pode verificar o URL para outras opções.

https://merchantprotocol.com/506/solved-front-controller-reached-100-router-match-iterations/

Sandipan S
fonte
Se eu executar ./n98-magerun.phar config: get no-route, eu recebo Não foi possível encontrar um valor de configuração para "no-route", e a entrada de configuração nem existe, você tem certeza de sua resposta?
preto
1
@Black você está fazendo errado. o método get do console requer o caminho - portanto, seu comando deve ser - \ n "n98-magerun.phar config: get cms / index / noRoute" \ n Por favor, verifique a opção de ajuda executando "n98-magerun.phar config: get - help "
Sandipan S