25 Feb 2011 0 commenti
Sviluppando codice in php avremo modo (haimè) di familiarizzare molto con gli errori. Anche i programmatori più esperti, per distrazione, superficialità o incapacità, li commettono. Ciò fa parte del mestiere ed è un qualcosa di fisiologico della programmazione: la bravura del programmatore non sarà solo non commetterli, ma anche quella di scovarli rapidamente in base alle informazioni fornite dal php stesso e sfruttare correttamente la gamma di funzioni utili per tali scopi.
Anticipo che nei presenti articoli parlerò in maniera generica di "errori" ma questi, come vedremo, non sono tutti cosiderabili tali nel senso proprio del termine.
LETTURA DEGLI ERRORI
Gli errori generati dal php ci forniranno molti preziosi dati per risalire al problema ed individuare la soluzione; quindi, la prima cosa da fare (può sembrare banale) è leggerli attentamente.
Ogni errore php riporta i seguenti dati:
- tipologia che potrà essere Parse error, Fatal error, Warning, Notice, Deprecated, Strict (saranno singolarmente esaminati nella prossima lezione);
- il motivo;
- il file in cui è presente l'errore (utilissimo in caso di inclusioni);
- la riga incriminata, la quale non sempre è di per sè quella che contiene l'errore in virtù di meccanismi "a cascata" o di parentesi graffe non chiuse (alle volte genera errore all'ultima riga).
VISUALIZZAZIONE DEGLI ERRORI
Occorre subito sgombrare il campo da un equivoco: un conto è la visualizzazione a video dell'errore, altro è la rilevazione dell'errore.
Mi spiego meglio: può succedere che un errore che non compare a video si sia comunque verificato (con tutte le conseguenze annesse e connesse). I due principali parametri da impostare per regolare tali aspetti sono l'error_reporting e il display_errors.
Con l'error_reporting andremo ad impostare il livello di errori che vogliamo rilevare (di cui vogliamo il resoconto, il report). Per livello di errori si intende quali errori rilevare e quali ignorare.
Il display_errors stabilisce, invece, se gli errori che si verificano devono essere stampati a video come parte dell'output o se devono essere nascosti all'utente. Tuttavia seppur con tale parametro si imposta la non visualizzazione l'errore, quest'ultimo comunque si verificherà.
Se abbiamo un error_reporting "severo" che esegue il report di tutti gli errori, ma il display_errors è impostato ad off avremo che tutti gli errori che si verificano non saranno visualizzati. Mi ripeto: gli errori comunque si verificheranno a prescindere della visualizzazione a video.
In molte occasioni, ciò spiega quei fenomeni, solo apparentemente inspiegabili, nei quali script perfettamente funzionanti su un server (ad esempio in locale), vadano a generare errori su altri server. Non è detto che sia questa la causa ma potrebbe esserlo.
Negli articoli che seguiranno vedremo:
- la diversa tipologia di errori che genera php, evidenziandone le caratteristiche e le differenze di ognuno;
- la corretta impostazione delle direttive error_reporting e display_errors (e non solo) nella fase di sviluppo;
- la corretta impostazione delle suddette direttive in fase di produzione;
- alcuni consigli su come "scovare" gli errori;
- alcuni consigli per "prevenire" gli errori.
Olimpio Romanella
Sono un appassionato di Web Developing con un particolare debole per php. Mi dedico principalmente dello sviluppo back-end ed in particolare programmazione lato server con php, sviluppo di database relazionali MySql e progettazione di CMS di piccole e medie dimensioni.
Mi avvalgo del framework javascript Jquery, utilizzando molti dei suoi plugin e nei dei miei progetti utilizzo spesso il framework MVC Codeigniter.