Attendi ...

Configurazione ed esempi di debug con PrestaShop

Il vantaggio di usare PrestaShop per un'attività e-commerce è l'abbattimento delle spese necessarie per lo sviluppo di un software su misura, nonché l'enorme riduzione dei tempi di sviluppo, deploy e collaudo. Uno svantaggio potrebbe essere, almeno all'inizio, la difficoltà nel risolvere piccoli problemi di configurazione, o addirittura il debug di malfunzionamenti specifici.

Oggi vedremo come, con un minimo bagaglio di conoscenze tecniche, è possibile procedere alla ricerca di soluzioni ad hoc in caso di inconvenienti di qualsiasi tipo. Quello che vedremo non è la soluzione di un problema specifico, bensì una metodologia generale per affrontare un problema qualsiasi, investigare le cause e tentare una soluzione. A titolo d'esempio faremo riferimento ad un problema concreto, in modo da rendere meno astratta l'esposizione del metodo, ma la procedura che seguiremo sarà generica e applicabile in molti altri casi (i.e. altri CMS o applicazioni generiche).

Il problema

Per fissare le idee consideriamo un caso banale. Abbiamo installato PrestaShop in locale, senza alcun problema, e configurato il negozio. Decidiamo di andare live e portiamo la nostra installazione in remoto, sul server in hosting. A questo punto non riusciamo più ad aprire il pannello del backoffice che visualizza l'elenco del moduli installati. E' uno degli scenari peggiori, perché se non possiamo accedere ai moduli del backoffice, non riusciremo a modificare alcuna delle impostazioni del negozio, dalla grafica della home page fino alle modalità di pagamento.

In questi casi, di solito, si esegue una ricerca su internet per vedere se qualcuno ha già avuto (e risolto) il nostro stesso problema. Quasi sicuramente troveremo delle soluzioni, ma non è detto che vadano bene anche a noi. Continuando l'esempio visto sopra (i.e. la tab dei moduli non si apre), potremmo credere che si tratti di un problema del memory_limit di PHP, come discusso in questo articolo.

Siccome vogliamo indagare una metodologia efficiente, e non discutere il caso particolare, supponiamo che cambiando il memory_limit non risolva nulla. Il server accetta il nuovo valore, in locale funziona tutto, ma in remoto continuiamo a non poter aprire la tab dei moduli. Cosa resta da fare?

Il metodo

Se la ricerca sul web non porta a nulla, prima di disperare ricordiamoci sempre qual è lo strumento principe di analisi delle problematiche di un server remoto: l'analisi dei files di log.

Abbiamo già visto come accedere al gestore dei files di log nel caso di una VPS amministrata via Plesk.

Quando abbiamo sotto mano il file di log, di solito abbiamo due scenari:

  1. Il problema è replicabile quando vogliamo
  2. Il problema non è replicabile

L'esempio in questione è replicabile, perché basta collegarsi al backoffice di PrestaShop, tentare di aprire la tab dei moduli e guardare cosa succede nel file di log. Per i problemi non replicabili è invece necessario avere qualche indicazione dettagliata delle condizioni che generano l'errore. A seconda del contesto questi “indizi” potrebbero essere: l'orario esatto del malfunzionamento, il nome dell'utente coinvolto, l'ID del prodotto/oggetto interessato dal problema, ecc. Con questi indizi dovremo setacciare i files di log e ricostruire gli eventi, lavorando come investigatori sulla scena del crimine. Se siamo su Linux potrebbe essere utile l'uso del comando grep per filtrare opportunamente i files di log.

Una volta identificato l'errore avremo sotto gli occhi un messaggio più o meno comprensibile, ad esempio

PHP Parse error: syntax error, unexpected ':' in /var/www/vhosts/mydomain.it/subdomains/mysite/httpdocs/modules/paysafecard/PrepaidServices.php on line 181, referer: http://studioteam.hostingtech.it/admin_foo/index.php?tab=AdminThemes&token=f3d0016e2975c01cca0b6ad994d4862d

Per quanto il messaggio possa sembrare criptico, in realtà siamo a cavallo. In molti casi basterà copiare il messaggio in un motore di ricerca per trovare la soluzione specifica al nostro problema. Il vantaggio del log, in questo caso, è la possibilità di cercare sul web le parole chiavi esatte, emerse dall'analisi del file di log, anziché quelle dedotte da una diagnosi superficiale del problema.

Se non abbiamo accesso al file di log, possiamo provare ad abilitare la visualizzazione dei messaggi d'errore direttamente nel browser. Nel caso di PrestaShop ciò significa editare il file

<root>/config/config.inc.php

e cambiare la configurazione della proprietà display_errors

ini_set(‘display_errors’, ‘on’)

in questo modo dovremmo trovare la stessa indicazione vista sopra: il principale sospetto è la linea 181 del file PrepaidServices.php.

Una volta identificata la pagina (in questo caso addirittura la riga) del problema si entra nel vivo della questione, e non è più possibile fornire indicazioni generali. Dovremo guardare la codice e tirare fuori qualche competenza tecnica, ma il grosso del lavoro è fatto: siamo partiti da un problema sconosciuto, che riguardava l'intera applicazione, e siamo arrivati ad un problema specifico, circoscritto a poche line e di codice. Come ultimo consiglio, per problemi di questi tipo, ricordiamoci che in genere le differenze tra la macchina locale e il server remoto riguardano la codifica dei caratteri, la configurazione del server, l'ambiente di runtime e la versione PHP: sono questi i principali fattori di cui tener conto per trovare la causa esatta di un problema che si manifesta solo in remoto.

05.06.2012

Ti potrebbero interessare

WordPress: aggiornarlo è fondamentale per Sicurezza e Prestazioni

Aggiornare WordPress è fondamentale

Mantenere sempre aggiornato il proprio sito web WordPress è di fondamentale importanza per diversi motivi:

Sicurezza: le versioni più recenti di WordPress spesso includono correzioni di sicurezza per vulnerabilità che sono state scoperte nelle versioni precedenti. Mantenere il software aggiornato aiuta a proteggere il tuo sito da minacce di sicurezza e a prevenire potenziali [...]
26.01.2024
Dettagli

Indirizzo Email e Sito Internet personali

Il potere di Indirizzo Email e Sito Internet Personali

L'importanza, anche per una persona di avere un indirizzo email e un sito internet con il proprio nome

Viviamo in un'era digitale in cui la presenza online è diventata essenziale per connettersi con il mondo circostante. Uno degli strumenti fondamentali per affermare la propria identità digitale è rappresentato dall'indirizzo email e dal sito internet [...]

10.01.2024
Dettagli

PHP 8.3 disponibile sui nostri piani

A partire dal mese di Dicembre abbiamo iniziato ad introdurre su tutti i nostri servizi di Hosting Linux, Hosting WordPress, Hosting Multidominio e Cloud Hosting, la possibilità di utilizzare anche l'ultima versione stabile di PHP 8.3.

Come di consueto, dal proprio pannello di amministrazione è possibile modificare in autonomia la versione di PHP utilizzata per il proprio dominio o [...]

01.12.2023
Dettagli