Nuovi articoli: Blog - Cosa mi ha spinto a scrivere

Nuovi articoli: Cosa fare da disoccupato: Che fare se il datore di lavoro non paga

Nuovi articoli: Joomla 4 - Passaggio a PHP 8

Nuovi articoli: Cosa fare da disoccupato: il patto di servizio personalizzato

Nuovi articoli: Silicon Power SSD A55 512GB vs Kingston A400 480GB

avatar php 8Dopo qualche giorno che mi sto occupando di burocrazia, mi sono messo finalmente a fare manutenzione anche al blog! Insomma, lo stare a casa, ha anche i suoi vantaggi e si può dedicare più tempo alle proprie passioni... e così mi sono deciso a perdere un po' di tempo per finire la migrazione del blog a Joomla! 4. Non che non lo avessi già fatto... Probabilmente ve ne sarete resi conto 😁... Comunque sia avevo posticipato il passaggio a PHP 8 a causa di vari errori che questa nuova versione del blog mi stava dando. Per fare l'analisi dei vari errori, trovarne la causa e risolverli ci si mette del tempo che tanto spesso non si ha. Ora il tempo c'é e dunque mano all'opera!

Come accennavo poc'anzi tra i cambiamenti che bisogna mettere in conto quando si fa migrazione alla versione di Joomla! 4.x, c'é il passaggio obbligatorio a PHP versione 8. Uno dei motivi è piuttosto ovvio: la versione 7.x è oramai obsoleta e non più supportata e ciò vale anche per tutte le installazioni Joomla!. Dall'altra, Joomla! 4 è stato creato per interfacciarsi pienamente con la nuova versione di PHP. 

Di fatto, far girare Joomla! 4 con PHP 7.x è alquanto limitante e personalmente ho battagliato e non poco per diversi malfunzionamenti che mio malgrado ho dovuto sopportare fino a che non ho trovato il bandalo della matassa risolvendo il problema che mi impediva di far abbracciare al blog la nuova versione di PHP.

Internal Server Error 500

Ogni volta che dal pannello dell'hosting impostavo la nuova versione di PHP la risposta era "errore 500"... O meglio "Internal Server Error 500" il che indica che per qualche sorta di motivo il server non ha potuto rispondere alla richiesta, senza per questo specificare in alcun modo cosa lo ha causato.

Dapprima, ho pensato che vi fosse ancora qualche estensione spuria o per meglio dire non compatibile con il nuovo sistema. Di fatto come accennato già in altri articoli, il passaggio ad una nuova versione implica obbligatoriamente l'abbandono di plugin, moduli e componenti non più compatibili e l'adozione di altre soluzioni studiate o adattate ad hoc per il nuovo CMS.

Tuttavia, alcune delle estensioni da me adottate in passato erano ancora installate nel blog. Alcune funzionando senza troppi intoppi, altre avevano avuto la necessità di qualche ritoccatina nel codice, in special modo tenendo conto del cambiamento di alcune API di Joomla!.

Ad esempio nel caso di un plugin che inseriva grazie alle API di Joomla! il proprio foglio di stile CSS all'interno del tag head di ogni pagina, ho dovuto cambiare radicalmente il codice di inclusione dello stesso in quanto le API dapprima deprecate erano state di fatto soppiantate dalla nuova versione con Joomla! 4.

Detto ciò, ho aprofittato per una nuova e più profonda pulizia di Joomla! dalle vecchie estensioni non più compatibili dovendo in alcuni casi intervenire a livello di database per cancellare dati e tabelle che gli script di disinstallazione non erano programmati per eliminare in automatico. Per un lavoro davvero "certosino" ci è voluto molto tempo.

Tuttavia l'errore 500 persisteva.

In questi casi, è sempre indispensabile capire cosa genera il malfunzionamento del CMS o cosa ne provoca la mancata elaborazione da parte del server.

Per prima cosa ho utilizzato gli "Strumenti per sviluppatori" integrato nel browser Google Chrome (Ctrl+Maius+I). Qui selezionando la scheda "Rete", ho selezionato la richiesta che ha generato l'errore 500. 

Selezionata, appare nella parte sinistra il riquadro che consente di accedere a tutte le informazioni relative alla richiesta selezionata. Nella scheda "Risposta", si può sperare di ottenere ulteriori dettagli sull'errore. Nel mio caso ho fatto bingo! Infatti qui ho scoperto che era assente il modulo mysqli per la versione di PHP selezionata. Chiaramente, ciò impediva la comunicazione con il database e dunque l'elaborazione delle richieste da parte del server.

Di facile risoluzione, mi è bastato accedere al pannello del mio piano di hosting e nelle impostazioni della versione di PHP, ho selezionato il modulo mysqli. In alcuni panel è necessario salvare, nel caso di cPanel è bastato selezionare il modulo per installarlo e renderlo immediatamente operativo. Tornando infatti alla home page del blog ed effettuando il refresh (F5) ho cominciato ad apprezzare i primi segni di vita! 

impostazioni php modulo mysqli

Debug sistema

Purtroppo però non è finita qui. In effetti, uno dei vecchi plugin stava dando qualche fastidio impedendo il corretto caricamento della pagina. Ma quale?  

Per fare ciò è necessario mettere in modalità debug Joomla!. Dal pannello amministratore, clicchiamo su Sistema > Configurazione globale.

Nella scheda Sistema al riquadro Impostazioni Debug attivare Debug sistema

Il sistema Debug da traccia di tutti i passaggi che fa il server nell'elaborazione delle nostre richieste. Nello specifico, quando carichiamo una pagina specifica, elencherà tutti i passaggi che il sistema effettua nel caricare ogni singolo componente e plugin che concorrono nel generare la pagina richiesta.

Se vi è un errore, elencherà tutte le operazioni partendo proprio dall'istruzione che lo ha generato. Individuato, il colpevole è il momento di agire!

Disattivazione o rimozione dell'estensione

Ci sono più modi di risolvere i problemi di compatibilità. Il primo è agire alla radice: disattivazione e dinstallazione. Tuttavia questo approccio vi lascerà senza la funzionalità per la quale quell'estensione era stata installata sul vostro sito web. A volte, basta semplicemente adattarsi e sfruttare le potenzialità già offerte nativamente dal CMS. Ciò è preferibile per tanti motivi, il primo di tutti è la velocità di caricamento che è sempre più importante. C'è da considerare che più estensioni sono installate sul vostro sito, più macchinoso e lento sarà nel caricare le pagine del vostro sistema.

Sfruttando invece le potenzialità e le estensioni native, si ridurranno tempi di attesa, incompatibilità e possibili errori che si potrebbero riscontrare soprattutto in futuro con i nuovi aggiornamenti. Di fatto tante estensioni di terze parti vengono di fatto abbandonate dopo alcui anni di sviluppo generando di fatto uno scoglio nell'evolversi del sistema man mano che escono i nuovi aggiornamenti. E' dunque da privilegiare la scelta di poche e ben scelte estensioni che serviranno a fare esattamente ciò che è necessario e nulla più.

Modifica o sostituzione dell'estensione

In alternativa, si può sempre tentare di adattare il codice dell'estensione responsabile dell'errore modificando il codice non più compatibile con la nuova versione di PHP. Questo approccio può andare bene per mantenere la funzionalità che l'estensione ci forniva. Tuttavia, probabilmente renderà il vostro sito più vulnerabile ad attacchi esterni. Se proprio non ne possiamo fare a meno, valutiamo la sostituzione con una estensione equivalente.

Questo vuol dire trovare un altra estensione affidabile e di provenienza certa che faccia la stessa cosa ma che sia scritta per essere compatibile con il CMS in uso e la versione di PHP scelta.

In questa fase, scartate tutte le estensioni che siano di dubbia reputazione poiché anche in questo caso, potremmo creare delle falle di sicurezza nel nostro sito.

In conclusione, migrare da una versione all'altra comporta un lavoro complesso che vi obbligherà a cambiamenti e continui test di affidabilità del vostro sito web. Per contro, potrete contare in genere su una maggiore velocità, su un website più sicuro e compatibile con le nuove tecnologie.

Se l'articolo ti è stato utile, non ti dimenticare di condividerlo... e se hai suggerimenti, non dimenticarti di lasciare qui sotto il tuo commento.


offrimi una birra ;)
E dai, offrimi una birra!
Siate generosi, per favore

Se hai gradito l'articolo, condividilo, basta un click:
Aggiungi commento
I commenti lasciati dagli utenti del blog sono sempre soggetti a controllo prima di eventuale pubblicazione. I commenti non considerati adatti per contenuti, spam o forma saranno eliminati e non pubblicati. Leggi i Termini e Condizioni di utilizzo per maggiori informazioni.


Iscriviti alla Newsletter!

Abilita JavaScript per inviare questo modulo