Errore nell'aggiornamento a Joomla4: Call to Undefined method Joomla\CMS\Application\AdministratorApplication::isAdmin()

| Gianluca Gabella | Joomla!

È tempo di aggiornamenti in casa Joomla e cominciano a spuntare i primi errori. Vediamo come affrontare i più comuni errori di aggiornamento dalla versione 3 alla versione 4.

Da qualche settimana è finalmente disponibile Joomla4 e moltissimi webmaster si stanno cimentando nelle operazioni di upgrade. Si tratta di un passaggio di versione "major", la prudenza non è quindi mai abbastanza: fare sempre un bel backup e magari seguire una guida dettagliata.

Nonostante tutte le precauzioni possibili qualcosa può comunque andare storto e nel 99% dei casi è colpa di una qualche estesione che non avete aggiornato ad una release compatibile con Joomla 4.

Il check pre aggiornamento è un tool utilssimo ed è fondamentale studiarlo con attenzione: ci saranno segnate tutte le estensioni che non sono compatibili o che potrebbero creare problemi una volta completato l'upgrade. Se sul vostro sito sono installate poche estensioni probabilmente il check non richiederà molto tempo. Se ne avete installate decine (magari anche vecchie) andare a capire se lo sviluppatore ha fatto uscire una versione compatibile con Joomla4 sarà più brigoso. L'importante è NON SALTARE QUESTO PASSAGGIO. Aggiornare Joomla lasciando attivi dei plugin non compatibili può letteralmente tirarvi giù il sito.

Ho aggiornato Joomla, ma è esploso il sito

Pensavi di aver fatto tutti i controlli possibili immaginabili, hai aggiornato tutto l'aggiornabile ma qualcosa è andato storto. Succede, don't panic.

Uno degli errori più comuni che stanno saltando fuori dagli aggiornamenti è il seguente: Joomla si aggiorna regolarmente, avete il vostro bellissimo Joomla 4, ma appena entrate nel pannello di controllo (o da frontend) vi compare il seguente messaggio di errore: 0 - Call to undefined method Joomla\CMS\Application\AdministratorApplication::isAdmin()

errore joomla4 call to undefined method

L'errore è abbastanza comune perchè la funzione isAdmin() è una di quelle che con il passaggio alla versione 4 è stata deprecata e sostituita dal metodo isClient(), tra l'altro già disponibile anche per la versione 3.x di Joomla.

Questo è quindi il primo grande indizio che abbiamo: è colpa di un'estensione non aggiornata.

Come capisco quale estensione genera l'errore?

Questa è la parte più complessa: ci sono potenzialmente decine di estensioni che possono generare questo errore e il messaggio di cui sopra non da molte informazioni in merito.

Ed è qui che il core di Joomla viene in nostro soccorso: è possibile abilitare una modalità di debug, che ha lo scopo di darci tutte le informazioni possibili per trovare l'origine dell'errore.

Abilitarla è in teoria semplice: dal menu in alto -> sistema -> configurazione globale -> tab "Sistema" -> Impostazioni Debug e cliccare su "SI" in "debug di sistema".

abilitare debug

Il problema è che, in qualsiasi pagina voi andiate salterà sempre fuori l'errore dell'undefined method, e non avrete modo di modificare alcunchè.

Per risolvere il problema dobbiamo modificare a mano il file configuration.php che si trova nella root del vostro sito joomla.

Accediamo quindi ai file del sito tramite FTP (per esempio con un client tipo FileZilla o con il file manager del vostro hosting) e modifichiamo la stringa "debug" da 0 a 1:

stringa debug

Salvate il file e ricaricatelo via FTP nella root del sito.

Aggiornate ora la pagina del pannello di controllo di Joomla. Se tutto è andato a buon fine salteranno fuori nuove info sul vostro errore:

call stack

Andiamo ad analizzare l'output. La call stack è (in parole povere) una colonna di "chiamate" attive in un dato momento e la cui esecuzione non è terminata. Sostanzialmente è un treno di chiamate che ci aiuta a capire dove ha avuto origine l'errore.

Nell'immagine sopra vediamo che la maggior parte delle chiamate fa parte del core di joomla:

  • JROOT/administrator/* è la cartella di amministrazione di joomla
  • JROOT/libraries/* è la cartella con le librerie standard utilizzate da joomla

l'unica chiamata che non fa parte del core è la numero uno:

JROOT/plugins/system/canonicallinks/canonicallinks.php:35

fa riferimento ad un plugin di sistema chiamato "canonical links". Ci sono quindi buone possibilità che l'estensione che genera il problema sia proprio quella.

L'unico modo per risolverlo è disabilitare il plugin in modo che non venga caricato.

Come disabilitare un plugin di joomla senza aver accesso al pannello di controllo?

Anche in questo caso è impossibile disabilitare il plugin (o una qualsiasi altra estensione) direttamente dal pannello di controllo: qualsiasi pagina carichiamo ci tirerà fuori l'errore, impedendoci di fare alcuna modifica.

Abbiamo due modi quindi per risolvere:

1) Agire via FTP

Il primo metodo è il più semplice, perchè richiede di fare una modifica solo via FTP. Sostanzialmente navighiamo verso la cartella del plugin (nel nostro caso /plugins/system/canonicallinks/) e rinominiamo la cartella.

Dopo averla rinominata basta aggiornare la pagina. Se il problema era dovuto proprio a quel plugin allora ora dovrebbe tutto funzionare regolarmente.

Questa soluzione è veloce e indolore, ma potrebbe non bastare. Non è detto che il metodo sia proprio dentro quella cartella, potrebbe richiamare altri plugin, o altri componenti. La soluzione migliore rimane quella di agire direttamente nel database.

2) Agire via phpmyadmin sul database MySql

E' possibile disabiltare un plugin (o una qualsiasi estensione) direttamente da database. Per farlo abbiamo bisogno di un tool chiamato phpmyadmin che ci permette di fare modifiche direttamente sul db. Attenzione: può essere pericoloso, andare a toccare le cose sbagliate può danneggiare ulteriormente il vostro sito, anche irrimediabilmente. Mi raccomando i backup!

Apriamo quindi phpmyadmin e dalla colonna di sinistra clicchiamo sulla tabella #_extensions (dove # è il vostro prefissio del database).

Cerchiamo quindi il nome dell'estensione che sta generando il problema.

Una volta trovata clicchiamo sul link "modifica":

modificaplugin

Scrolliamo finchè non troviamo il campo "enabled". Probabilmente sarà settato su "1". Modifichiamolo mettondo uno 0 nel valore:

enabled

Clicchiamo quindi in fondo alla pagina su "Esegui".

Se tutto è andato a buon fine il plugin è correttamente disabiltato e, aggiornando la pagina di joomla, tutto sarà tornato alla normalità.

joomla4ok

Buon divertimento con la nuovissima Joomla4!


Se ti è piaciuto questo articolo, condividilo!

pixed logo

I professionisti di Joomla! a Bologna!

Pixed di Gabella Gianluca
via del Lavoro 39, 40127 - Bologna (BO)
p.IVA: 03219311200 - C.F.: GBLGLC84T21A944B
Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo. - 051.514551

scarica teamveiwer
Privacy Policy - Cookie Policy