La piattaforma | Caratteristiche | Sviluppo | Scarica | Licenza |EnglishItalian

SourceForge.net Logo

Support Wedgefish development

Gestione degli errori avanzata

Quante volte, di fronte ad un errore PHP in un'applicazione complessa, vi siete chiesti dove mettere le mani?
Sapete che si è verificato un errore ad una certa riga di uno script. Ma da quale altro script era stata inclusa? E da quale funzione era stato richiamato quel codice?

Sarebbe utile se poteste ripercorrere le tracce dell'esecuzione del vostro codice, per capire da dove eravate partiti e come siete arrivati ad eseguire quella riga.
Lo strumento che vi consente di fare ciò è già stato previsto in PHP: la funzione debug_backtrace. Ma essa restituisce un complesso array, dal quale è difficile ricavare a colpo d'occhio le informazioni che vi servono.

Esempio di messaggio di erroreWedgefish viene incontro allo sviluppatore anche in questo, tramite il suo avanzato gestore di errore, che sostituisce quello di default (grazie all'istruzione set_error_handler) e viene richiamato ogni volta che si verifica un errore di runtime nel vostro codice.
Esso è in grado di convertire l'output della funzione debug_backtrace in un vero e proprio stack trace nello stesso stile utilizzato dal linguaggio Java: riassumendo riga per riga il percorso di esecuzione, elencando i nomi degli script che sono stati richiamati ed il numero di riga di ciascuno di essi in cui sono state eseguite le funzioni che hanno portato all'errore, come nell'immagine a fianco.

Spesso non è desiderabile che chiunque possa vedere eventuali errori generati dal vostro sito, specialmente su un server di produzione. Questo potrebbe infatti fornire indizi su eventuali vulnerabilità del vostro codice e favorire eventuali attacchi.
In questo caso, è possibile fare in modo che il messaggio di errore non venga visualizzato, impostando la direttiva "errors.display" a 0 nella configurazione globale o in quella del sito, e specificando invece che l'errore venga inviato in formato testo ad un indirizzo email. L'utente del sito vedrà in questo caso una semplice pagina bianca, oppure una pagina contenente un messaggio personalizzato che è possibile definire per ciascun sito(1).

(1) Questa funzione non è stata ancora implementata.

 

Wedgefish - Copyright © 2005-2008 by Massimiliano Alessandri
This is free software, and you may redistribute it under the Affero GPL.
Wedgefish comes with absolutely no warranty; for details, see the license.
You may download the currently running source code for this software.