Guida a PHP: visualizzazione degli errori

Avere a che fare con un linguaggio interpretato come PHP significa scoprire la maggior parte degli errori durante l’esecuzione del codice: è dunque fondamentale, durante la fase di sviluppo, visualizzare informazioni il più possibile dettagliate sugli errori rilevati per essere in condizione non solo di accorgersene prontamente ma di riuscire altrettanto facilmente a individuarne la causa.

Spesso, tuttavia, la configurazione di PHP del server web è adatta ad un ambiente di produzione, ossia per il visitatore del sito, cui non viene mostrato alcun messaggio di errore o avvertimento anche qualora venga rilevato, ma viene semplicemente interrotta l’esecuzione dello script in corrispondenza della riga di codice ove si verifica l’errore (in una pagina web, viene caricata solo in parte). Questo rende davvero dura la vita di chi deve 1) individuare gli eventuali errori presenti, 2) risalire alla causa e 3) provi rimedio: per queste ragioni durante la fase di sviluppo è consigliato modificare la configurazione di PHP affinché mostri il maggior numero di informazioni possibili per mettere lo sviluppatore nella condizione di risolvere il problema nel più breve tempo possibile e con il minimo sforzo.

La configurazione di PHP risiede nel file php.ini (se avete installato un pacchetto BitNami, lo trovate nella sottocartella php/etc), all’interno del quale si trovano tutti i parametri di configurazione dettagliatamente commentati: ciò permette di capire abbastanza facilmente il significato di ciascuno, i valori che può assumere e quelli consigliati per l’ambiente di sviluppo e di produzione (rilascio pubblico del sito).

A noi in particolare interessano tre parametri, che consentono di selezionare con estrema granularità il numero e il tipo di messaggi di errore che desideriamo siano visualizzati nella pagina web: display_errors, error_reporting e html_errors.

display_errors

display_errors = On // valore consigliato in fase di sviluppo

Questo parametro consente di abilitare (On) o meno (Off) globalmente la visualizzazione dei messaggi di errore: si tratta di una sorta di interruttore, che permette rapidamente di passare da un ambiente di sviluppo (visualizza tutti gli errori secondo la configurazione specificata) o di produzione (disattiva la visualizzazione di qualsiasi messaggio di errore o avvertimento).

error_reporting

error_reporting = E_ALL | E_STRICT // valore consigliato in fase di sviluppo

Questo parametro permette di scegliere con estrema precisione quali tipologie di messaggi di errore visualizzare: leggendo il commento al parametro di configurazione vediamo che esistono diverse classi di errori ed è possibile specificare quali ci interessa visualizzare mediante una sintassi basata sugli operatori dell’algebra booleana.

Date due tipologie di errori E_1 ed E_2si può scrivere:

E_1 & E_2
Mostra i messaggi di errori di tipo E_1 e E_2
E_1 | E_2
Mostra i messaggi di errori di tipo E_1 o E_2
~E_1
Mostra tutti i messaggi di errori ad eccezione di quelli di tipo E_1

A me interessa visualizzare (almeno all’inizio) tutti gli errori e gli avvisi (E_ALL) oltre ai consigli per rendere il codice migliore possibile (E_STRICT), comee la segnalazione di funzionalità deprecate, ossia destinate a scomparire nelle versioni future del linguaggio.

html_errors

html_errors = On // valore consigliato in fase di sviluppo

Questo parametro consente di inserire nei messaggi di errore visualizzati all’interno delle pagine web un collegamento alla documentazione ufficiale di PHP riguardante il tipo di errore riscontrato.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...