Pagina 1 di 2

Classe in error_handler

Inviato: 17/08/2010, 20:51
da BMercer
Salve, avrei un problema che però non riesco a risolvere per conto mio per il motivo che segue:
Ho installato xampp perchè mamp senza motivo non mi mostrava gli errori anche se il file php.ini aveva display_error settato su on e anche se il parametro error_reporting era E_ALL. Solo che su xampp il file php.ini non riesco ad editarlo perchè se clicco su salva dopo le modifiche mi dice "Impossibile registrare il file" anche se il file è in modalità Lettura e Scrittura. Xampp di default ha l'error_reporting settato su E_ALL eccetto i notice.

Ho creato una funzione per gli errori di php che poi viene definito attraverso la funzione nativa set_error_handler(callback function); Dentro alla funzione ho la necessità di caricare una classe per la gestione del template e quindi ciò che deve essere mostrato quando comprare l'errore. Il file in cui c'è l'error_handler vi sono già gli include necessari per richiamare i file che contengono la classe template.

Il problema è che se provoco un parse error non mi viene mostrato come dico io, ovvero richiamando la classe template, ma come php fà di default, ovvero pagina bianca con scritta nera.
Se provoco un notice ad esempio facendo l'echo di una variabile che non è settata non mi mostra nulla a causa del file php.ini. Se utilizzo la funzione trigger_error con tipo di errore E_USER_WARNING/NOTICE/ERROR non mi mostra nulla. Se provo un Fatal error attraverso un require(); che richiama un file inesistente non mi mostra nulla. Non sò più cosa fare. Non mi mostra nulla che non sia i Parse error e oltretutto senza caricare la funzione.

Siccome pensavo fosse a causa di una classe ho provato ad inserire un echo 'Errore personalizzato' dentro la funzione di error_handler ma non mi mostra nemmeno quello. Boh.
Idee?

Re: Classe in error_handler

Inviato: 17/08/2010, 21:45
da Carlo
Per chiarire. Il "parse error" non deve essere nello stesso file PHP contente il callback della funzione set_error_handler(), altrimenti non carica il contenuto della pagina e quindi non usa quella funzione come handler per gli errori.

Re: Classe in error_handler

Inviato: 18/08/2010, 0:54
da BMercer
Si quello è ovvio, infatti è provocato da questo codice esterno a tutto e alla fine del file:

Codice: Seleziona tutto

echo ''
echo '';

Re: Classe in error_handler

Inviato: 18/08/2010, 22:24
da Carlo
Eh no. Non funziona perchè il PHP nota subito dei parse error, e quindi non "compila" lo script.

Prova includendo il file con gli errori alla fine dello script php contenente la funzione che da handler.

Re: Classe in error_handler

Inviato: 19/08/2010, 13:10
da BMercer
E' vero non ci avevo pensato. Il problema è però un altro, non riesco a vedere gli altri errori.
Cosa posso fare?

Re: Classe in error_handler

Inviato: 20/08/2010, 20:56
da Carlo
Che inteni con gli "altri" errori?

Re: Classe in error_handler

Inviato: 20/08/2010, 22:35
da BMercer
Tutti gli altri errori di php tranne il parse. Ovvero vedo il parse ma non gli altri, vedi i notice, i warning, i fatal...ec..

Re: Classe in error_handler

Inviato: 21/08/2010, 17:51
da Carlo
Dipende dalla configurazione del PHP. Probabilmente la configurazione in uso sul server, fa vedere solo gli errori di parsing.

Re: Classe in error_handler

Inviato: 22/08/2010, 2:24
da BMercer
Xampp di default ha l'error_reporting settato su E_ALL eccetto i notice.
No, dice tutto ma non i notice.

Re: Classe in error_handler

Inviato: 22/08/2010, 21:16
da Carlo
Non è che hai cambiato tramite ini_set() il valore della direttiva error_reporting?