Qual è la causa dell'errore "Il controller anteriore ha raggiunto 100 iterazioni di corrispondenza router"?


14

Come sviluppatore Magento ho riscontrato questo problema un sacco di volte, so che si tratta di un problema di configurazione errata quando si verifica che alcuni moduli non vengano caricati, né i loro router, causando l'errore. Il più delle volte viene risolto senza alcuna azione, altre volte è possibile svuotare la cache

Ho letto più post su questo, cercando di eseguire il debug inserendo del codice aggiuntivo nel core controller Magento Front controller app/code/core/Mage/Core/Controller/Varien/Front.php, ma alla fine questo mostra solo quali router del modulo mancano, non perché non vengano caricati. Ogni volta che si verifica, provo a cercare quali URL generano l'errore, ma si tratta di informazioni inutili, come la traccia del codice. È sempre lo stesso

Forse è causato da conflitti tra moduli? Forse è un compito di cron che fa qualcosa di sbagliato? Forse un codice errato nelle versioni precedenti di Magento? Il fatto è che questo problema non si verifica dalla versione 1.7 (o se si verifica è totalmente sporadico). Ho trovato alcune differenze di codice nel flusso principale, come ad esempio

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

Nel metodo run () di app/code/core/Mage/Core/Model/App.phpo

$this->_shouldSkipProcessModulesUpdates()

controlla il metodo _initModules () ...

Voglio credere che ci dovrebbe essere qualcuno che ha trovato definitivamente la causa. Qualche consiglio?


1
Hai fatto riferimento a questo? github.com/convenient/…
Tim Hallman,

1
Il poster di quell'articolo è stato in grado di risolvere il problema sostituendo Mage_Core_Model_Confige forzando$_useCache = false
Tim Hallman,

1
Dopo aver letto l'intero articolo, penso che dovresti pubblicarlo come la risposta giusta alla mia domanda, in modo che altri utenti possano leggerlo. Grazie
Raul Sanchez,

Risposte:


12

Sembra che tu stia riscontrando un bug di configurazione di Magento.

C'è un eccellente riscrittura con soluzione qui .

In quell'articolo l'autore è stato in grado di correggere il bug sovrascrivendo Mage_Core_Model_Confige forzando $_useCache = falsedurante la rigenerazione della configurazione.


4
Accidenti! Non riesco mai a raccogliere il rappresentante per quell'articolo, altre persone lo collegano sempre per primo;)
Luke Rodgers,

3
Very nice writeup @LukeRodgers!
Tim Hallman,

5
Vorrei solo commentare e dire che Magento ha accettato questo come una soluzione al problema con SUPEE-4755 github.com/convenient/…
Luke Rodgers,

2
Ho anche aggiunto un'altra patch. Non abbastanza carino, ma discusso qui. github.com/convenient/…
Luke Rodgers,

Sto affrontando questo problema in Magento 2 CE versione 2.1.0. Dovrebbe essere corretto proprio perché è un vecchio problema?
Ankit Shah,

6

Controlla le impostazioni di configurazione di Magento URL di No-route predefinito su

Sistema> Configurazioni> Web> Pagine predefinite
. Dovrebbe essere impostato il valore predefinito cms / index / noRoute . Controllare qui il valore del negozio particolare e se il valore predefinito è stato sovrascritto. Magento può andare in un ciclo infinito fino a quando non raggiunge il limite di 100 iterazioni se non è impostato correttamente.

Se usi Magerun , esegui questo comando.

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

Ho trovato la soluzione qui, questo è stato il problema nel mio caso. Puoi controllare l'URL per altre opzioni.

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


Se eseguo ./n98-magerun.phar config: get no-route, allora ottengo Impossibile trovare un valore di configurazione per "no-route" e la voce di configurazione non esiste nemmeno, sei sicuro della tua risposta?
Black

1
@ Nero stai sbagliando. il metodo get della console richiede il percorso - quindi il comando dovrebbe essere - \ n "config n98-magerun.phar: get cms / index / noRoute" \ n Controlla l'opzione di aiuto eseguendo "n98-magerun.phar config: get - aiuto "
Sandipan S
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.