Quelle est la cause de l'erreur «Le contrôleur frontal a atteint 100 itérations de correspondance de routeur»?

14

En tant que développeur Magento, j'ai rencontré ce problème des tonnes de fois, je sais que c'est un problème de mauvaise configuration lorsqu'il se produit que certains modules ne sont pas chargés, ni leurs routeurs, provoquant l'erreur. La plupart du temps, il est résolu sans action, d'autres fois, vous pouvez vider le cache

J'ai lu plusieurs articles à ce sujet, essayant de déboguer en plaçant du code supplémentaire dans le contrôleur frontal de Magento app/code/core/Mage/Core/Controller/Varien/Front.php, mais à la fin cela ne montre que les routeurs de modules manquants, pas pourquoi ils ne sont pas chargés. Chaque fois que cela se produit, j'essaie de voir quelles URL donnent l'erreur, mais ce sont des informations inutiles, identiques à la trace du code. C'est toujours la meme chose

Peut-être est-ce dû à des conflits de modules? Peut-être que c'est une tâche cron de faire quelque chose de mal? Peut-être un mauvais code dans les anciennes versions de Magento? Le problème est que ce problème ne se produit pas depuis la version 1.7 (ou s'il se produit, il est totalement sporadique). J'ai trouvé des différences de code dans le flux principal, telles que

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

Dans la méthode run () app/code/core/Mage/Core/Model/App.phpou

$this->_shouldSkipProcessModulesUpdates()

vérifier la méthode _initModules () ...

Je veux croire qu'il devrait y avoir quelqu'un qui a définitivement trouvé la cause. Des conseils?

Raul Sanchez
la source
1
L'avez-vous référencé? github.com/convenient/…
Tim Hallman
1
L'affiche de cet article a pu résoudre leur problème en annulant Mage_Core_Model_Configet en forçant$_useCache = false
Tim Hallman
1
Après avoir lu l'intégralité de l'article, je pense que vous devriez l'afficher comme la bonne réponse à ma question, afin que les autres utilisateurs puissent le lire. Merci
Raul Sanchez

Réponses:

12

Il semble que vous rencontriez un bogue de configuration Magento.

Il y a une excellente rédaction avec une solution ici .

Dans cet article, l'auteur a pu corriger le bogue en remplaçant Mage_Core_Model_Configet en forçant $_useCache = falselors de la régénération de la configuration.

Tim Hallman
la source
4
Bon sang! Je n'ai jamais la chance de récolter le représentant de cet article, d'autres personnes le lient toujours en premier;)
Luke Rodgers
3
Très beau résumé @LukeRodgers!
Tim Hallman,
5
Je voudrais juste commenter et dire que Magento a accepté cela comme une solution au problème avec SUPEE-4755 github.com/convenient/…
Luke Rodgers
2
J'ai également ajouté un autre patch. Pas tout à fait aussi agréable, mais discuté ici. github.com/convenient/…
Luke Rodgers
Je suis confronté à ce problème dans Magento 2 CE version 2.1.0. Il devrait être corrigé correctement parce que c'est un ancien problème?
Ankit Shah
6

Vérifiez les paramètres de configuration de Magento URL par défaut sans route à

Système> Configurations> Web> Pages par défaut
. Il doit être défini sur la valeur par défaut cms / index / noRoute . Vérifiez également la valeur de magasin particulière si sa valeur par défaut a été remplacée ici. Magento peut entrer dans une boucle infinie jusqu'à ce qu'il atteigne la limite de 100 itérations s'il n'est pas configuré correctement.

Si vous utilisez Magerun , exécutez cette commande.

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

J'ai trouvé la solution ici, c'était le problème dans mon cas. Vous pouvez vérifier l'URL pour d'autres options.

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

Sandipan S
la source
Si j'exécute ./n98-magerun.phar config: get no-route then I get Impossible de trouver une valeur de configuration pour "no-route" et l'entrée de configuration n'existe même pas, êtes-vous sûr de votre réponse?
Black
1
@Black vous vous trompez. la méthode get de la console requiert le chemin - donc votre commande doit être - \ n "n98-magerun.phar config: get cms / index / noRoute" \ n Veuillez vérifier l'option d'aide en exécutant "n98-magerun.phar config: get - aide "
Sandipan S