Что является причиной ошибки «Фронт-контроллер достиг 100 итераций сопоставления маршрутизатора»?

14

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

Я читал несколько сообщений об этом, пытаясь отладить размещение дополнительного кода в основном контроллере Front Magento app/code/core/Mage/Core/Controller/Varien/Front.php, но в конце это показывает только то, какие модульные маршрутизаторы отсутствуют, а не почему они не загружаются. Каждый раз, когда это происходит, я пытаюсь посмотреть, какие URL выдают ошибку, но это бесполезная информация, такая же, как трассировка кода. Это всегда то же самое

Может быть, это вызвано конфликтами модулей? Может быть, это какая-то проблема cron, делающая что-то не так? Может быть, какой-то неправильный код в старых версиях Magento? Дело в том, что эта проблема не возникает, начиная с версии 1.7 (или, если она возникает, то она совершенно спорадическая). Я нашел некоторые различия кода в основном потоке, такие как

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

В методе run () app/code/core/Mage/Core/Model/App.phpили

$this->_shouldSkipProcessModulesUpdates()

проверить в _initModules () метод ...

Я хочу верить, что должен быть кто-то, кто окончательно нашел причину. Какие-нибудь советы?

Рауль Санчес
источник
1
Вы ссылались на это? github.com/convenient/…
Тим Холлман
1
Постер этой статьи смог решить их проблему путем переопределения Mage_Core_Model_Configи форсирования$_useCache = false
Тим Холлман
1
После прочтения всей статьи, я думаю, вы должны опубликовать это как правильный ответ на мой вопрос, чтобы другие пользователи могли его прочитать. Спасибо
Рауль Санчес

Ответы:

12

Кажется, вы столкнулись с ошибкой конфигурации Magento.

Существует отличная рецензия с решением здесь .

В этой статье автору удалось исправить ошибку путем переопределения Mage_Core_Model_Configи принудительного применения $_useCache = falseпри восстановлении конфигурации.

Тим Холлман
источник
4
Черт! Я никогда не получаю репутацию этой статьи, другие люди всегда сначала ссылаются на нее;)
Люк Роджерс
3
Очень хорошая рецензия @ LukeRodgers!
Тим Холлман
5
Я просто хотел бы прокомментировать и сказать, что Magento принял это как решение проблемы с SUPEE-4755 github.com/convenient/…
Люк Роджерс
2
Я также добавил еще один патч. Не так хорошо, но обсуждается здесь. github.com/convenient/…
Люк Роджерс
Я сталкиваюсь с этой проблемой в Magento 2 CE версии 2.1.0. Это должно быть исправлено правильно, потому что это старая проблема?
Анкит Шах
6

Проверьте настройки конфигурации Magento URL по умолчанию без маршрута в

Система> Конфигурации> Интернет> Страницы по умолчанию
, Следует установить значение по умолчанию cms / index / noRoute . Проверьте также значение конкретного хранилища, было ли оно перезаписано здесь. Magento может войти в бесконечный цикл, пока не достигнет предела в 100 итераций, если он не установлен должным образом.

Если вы используете Magerun , запустите эту команду.

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

Я нашел решение здесь, это была проблема в моем случае. Вы можете проверить URL для других вариантов.

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

Sandipan S
источник
Если я выполню ./n98-magerun.phar config: get no-route, то получу сообщение Не могу найти значение конфигурации для «no-route», и запись конфигурации даже не существует, вы уверены в своем ответе?
черный
1
@ Чёрный, ты делаешь это неправильно. для метода get консоли требуется путь - поэтому ваша команда должна быть - \ n "config n98-magerun.phar: get cms / index / noRoute" \ n Проверьте параметр справки, запустив "config n98-magerun.phar: get - помощь »
Сандипан С.