Pagina bianca in Joomla anche con visualizzazione degli errori attivata

Quando il vostro sito Joomla vi mostra una pagina completamente bianca anzichè il normale contenuto, significa che qualcosa è andato storto.

Il caso più frequente è che si tratti di un errore PHP; nel qual caso solitamente è sufficiente vedere di che errore si tratta.

C’è però un caso più raro in cui la pagina rimane bianca nonostante tutto: si tratta di un bug in un plugin.

Vediamo le soluzioni per entrambi casi.

Attivare la visualizzazione degli errori

Una schermata che mostra il parametro da modificare nella configurazione di JoomlaNella maggior parte dei casi una pagina completamente bianca in un sito Joomla dipende da un errore PHP.

Se abbiamo appena attivato una nuova estensione, ovviamente il consiglio è quello di disattivarla e chiedere supporto all’autore dell’estensione.

Se però non siamo sicuri da che estensione dipenda, una buona procedura è quella di attivare la visualizzazione degli errori.

Andate nella configurazione globale di Joomla, nella scheda Server: vedrete un parametro di nome “Rapporto errori“.

Normalmente, tale parametro deve restare impostato su “Default sistema”. Se però vogliamo analizzare un errore che provoca una pagina bianca, possiamo impostarlo su “Massimo”.

Ricaricando la pagina, dovremmo riuscire a vedere qualche dettaglio in più sull’errore.

Non è detto che siamo in grado di risolverlo, dato che probabilmente si deve intervenire sul codice, ma magari riusciamo a capire di che estensione si tratta, e in qualunque caso siamo in grado di fornire dettagli aggiuntivi a chiunque ci fornisca supporto.

Se la pagina rimane bianca

Nel caso in cui abilitare tale opzione non cambi nulla, ci sono due possibilità.

La prima è che il nostro ambiente di hosting non consenta la modifica dinamica di questo parametro. Infatti, anche se noi lo troviamo come parametro di Joomla, di fatto è una impostazione PHP quella che stiamo cambiando.

In tal caso potrebbe essere necessario per noi intervenire direttamente sul pannello di gestione del nostro hosting e/o richiedere supporto al nostro fornitore.

La seconda è che abbiate incontrato un raro bug legato al plugin “System – SEF”.

System – SEF plugin bug

Dal backend di Joomla, disattivate il plugin System – SEF e poi ricaricate il vostro sito.

Se funziona tutto, complimenti! Avete incontrato un bug davvero raro 🙂

Come risoluzione definitiva, potreste anche lasciarlo disattivato nel caso in cui:

  • non stiate usando indirizzi SEF, oppure
  • stiate usando un diverso componente per ottenere indirizzi SEF.

In pratica non avete bisogno del plugin SEF se non state usando le opzioni SEF native di Joomla.

E ora qualche dettaglio tecnico

Per i più curiosi, o per quelli che devono necessariamente usare tale plugin, ecco qualche dettaglio tecnico che vi può aiutare a decidere come risolvere la questione.

Come spesso accade, tale bug è il frutto di più condizioni che si verificano contemporaneamente.

Espressione regolare troppo avida

Il plugin SEF analizza il flusso HTML riga per riga ed applica delle sostituzioni, in modo da convertire tutti gli indirizzi non-SEF in SEF.

Una di tali sostituzioni non riconosce correttamente la fine del tag. Prendiamo ad esempio la riga di HTML:

<div style=”backgroud-image: url(…)”><p>Blablabla</p>…

La sostituzione dovrebbe preoccuparsi solo di individuare e modificare l’URL dell’immagine di background, ma per un errore nell’espressione regolare rileva come input anche tutto l’HTML che segue, fino alla fine della riga.

Riga troppo lunga

Se guardate la sorgente HTML di qualunque sito vedrete che risulta di più facile comprensione grazie al fatto che il codice è disposto su più righe.

Ricordatevi che al browser non servono queste formattazioni: vi farebbe vedere il sito uguale anche se l’HTML fosse scritto tutto su una riga sola.

Ma la maggior parte dei programmatori e web designer componenti formattano correttamente l’HTML andando a capo regolarmente, per una migliore leggibiità; quindi e singole righe risultano relativamente brevi.

Tuttavia succede ogni tanto che per pigrizia, o per ridurre la lunghezza, qualche modulo o componente produca una lunga stringa di HTML tutta su una riga.

Se la riga risultante è abbastanza lunga, il comando preg_replace utilizzato nel plugin si rompe! E il vostro sito diventa invisibile.

Soluzioni

Non esiste un’unica soluzione, dipende dal vostro sistema. Vediamo però alcuni possibili suggerimenti:

  • come già detto, potreste semplicemente disattivare il plugin System – SEF se non vi serve
  • potreste modificare il plugin commentando la specifica istruzione che dà errori. Gli URL delle vostre immagini di background non diventeranno SEF. Questa è la soluzione che abbiamo utilizzato noi.
  • potreste modificare l’espressione regolare. Noi non ci abbiamo ancora provato, ma non dovrebbe essere difficilissimo.
  • potreste modificare il componente che produce l’HTML anomalo. Se sapete per certo di quale estensione si tratta e avete accesso al codice, inserire degli a capo (“\n”) qua e là nel codice non fa certo male. Magari poi condividete l’informazione con l’autore dell’estensione, che fa sempre bene al vostro karma.

joomla, programmatore

Commenti (6)

  • salve… e che fare se la pagina bianca è proprio quella del back-end?

    come faccio a capire cosa è successo?
    funzionava tutto correttamente ma dopo aver istallato il modulo di analytics, e fin qui tutto bene, uscita dall’amministrazione, tentando di rientrarci il giorno dopo… PAGINA BIANCA!

    il front end funziona perfettamente e così anche se accedo al sito tramite il menu utente.

    ma come mi collego a http://www.libianchicostruzioni.it/administrator una volta effettuato il login BIANCA!
    Da pagina bianca anche semplicemente cliccando sul botton di login non compilando i campi di utente e pasword.

    Può darmi delle indicazioni?

  • @simona:
    ti darò solo un rapido suggerimento. Manualmente, modifica una riga del file configuration.php inserendo:

    var $error_reporting = ‘30719’;

    in questo modo dovrebbe comparirti un messaggio di errore che almeno ti può aiutare a capire quale è l’estensione che sta facendo danno. Dopo, intervenendo direttamente sul database, potrai disattivarla.
    Per rimettere tutto come prima, imposta:

    var $error_reporting = ‘-1’;

    P.S. se hai bisogno di assistenza per l’accesso FTP o al database, ti chiedo di rivolgerti direttamente al tuo hosting / sistemista.

  • Mi è capitata la stessa cosa proprio ieri ed in effetti l’errore stava proprio nel file:
    …/components/com_sef/cache/cache.php
    Mancava una parentesi quadra ‘]’ ma anche rimettendola dava altri errori in altre righe. Ho disabilitato il plugin System SEF ma senza ottenre risultati.

    L’unica soluzione che ha funzionato è stato rimuovere (o meglio io ho rinominato) il file cache.php sopra descritto, svuotare la cache e ricaricare la pagina del sito e tutto torna alla normalità.
    Non so se è una procedura corretta, ma almeno ha funzionato (commentatela voi).
    Avevo aperto anche un tiket con il mio hosting provider, ma al momento non mi ha ancora dato una risposta.

    Spero possa essere utile a qualcuno questa mia soluzione.

  • Il sito formato con joomla 1.5 non si vede più dal lato utente e mi da questi errori:

    Deprecated: Function eregi_replace() is deprecated in /web/htdocs/www.marcopepe.it/home/joomla/components/com_sef/joomsef.php on line 369

    Parse error: syntax error, unexpected ‘;’, expecting ‘]’ in /web/htdocs/www.marcopepe.it/home/joomla/components/com_sef/cache/cache.php on line 817

    Mi sapete dire se si può fare qualcosa?
    Grazie e saluti

  • @Marco:
    come riportato nel commento sopra, potresti rinominare il file /components/com_sef/cache/cache.php. Non saprei dirti come mai è corrotto /( errato; potrebbe essere legato alla versione di PHP ma non possiamo aiutarti oltre, chiedi magari a chi ti segue per l’hosting.

I commenti sono chiusi.