Newsgroup: it.comp.www.php
Titolo: error_reporting

Ho un problemino con un'applicazione trasferita da PHP4 a PHP5 nella
gestione degli errori.
Nel mio script ho error_reporting(E_ALL) eppure quando vado subito
dopo a richiamare un altro file si comporta come se fosse E_STRICT ed
entra in errore in quanto trova un comando deprecato :
Error code : 2048 
Error message : var: Deprecated. Please use the
public/private/protected modifiers 
Script name : F:\Program files\...
Line number : 19 
Error reporting: 2047 
Adesso, se l'error reporting e' 2047 (E_ALL) perche' intercetta anche
il 2048 ?
Dato che non posso toccare il file dove si verifica l'errore (e' un
libreria che non ho sviluppato io) come posso aggirarlo mantenendo il
livello di notifica errori il piu' alto possibile ?
tks, ciao

 wrote in message
news:4ooeu01csrhvua535...@4ax.com...

Ciao, per caso hai settato un tuo error handler?
Se si, lo fa anche a me.
Io non ho indagato se debba comportarsi cosě o meno... ho scritto il
mio error handler in modo che legga l'attuale valore di error_reporting e
si comporti di conseguenza.
--
Roberto Simoni
www.robertosimoni.it

di error_reporting e si comporti di conseguenza.
Cosa intendi con si comporti di conseguenza ? Esiste per caso un modo
di forzare un rientro alla routine che ha causato l'errore (comunque
direi che non mi servirebbe a nulla in quanto la riga in errore non e'
stata eseguita). Purtroppo la libreria che genera l'errore non e' mia
e quindi non voglio / posso modificarla.
Grz, ciao

> Error reporting: 2047
Ho fatto altre prove e penso di aver trovato una soluzione temporanea
che si puo' applicare al mio script (non e' detto si possa anche con
il tuo). Tutto quello che ho fatto e' stato di creare l'error_handler
dopo che viene richiamata la routine (sviluppata da altri) dove c'e'
l'errore. E' vero che in questo modo non trappa altri eventuali errori
contenuti nella routine pero' non e' un problema dato che non la
potrei correggere. Prima era :
error_reporting(E_ALL);
set_error_Handler("eh");
require('xxxxx.php');
E' diventata :
error_reporting(E_ALL);
require('xxxxx.php');
set_error_handler("eh");
Sono comunque dell'idea che ci sia un bug in PHP5 e mi sembra alquanto
strano che nessuno l'abbia fatto presente. In pratica anche se setto
il livello massimo d'errore a 2047 (E_ALL) lui cattura anche il 2048
(E_STRICT) e questo non dovrebbe succedere. Non e' che c'e' qualcuno
piu' esperto di me che vuole darci un'occhiata ?
C'e' ancora una cosa che non mi e' chiara. Ho contattato l'autore
della libreria che ha l'errore e lui, molto sintetticamente, mi ha
detto che ''il mio error handler deve ignorarlo''. Ok, posso ignorare
l'errore pero' l'esecuzione del programma e' stata in ogni caso
interrotta e, anche se potessi farla ripartire, avrei sempre che la
riga in errore non e' stata eseguita. Che senso ha dire che devo
ignorare l'errore ?
Tks, ciao

 wrote in message
news:39bku01p1gma74egd...@4ax.com...

In realtà, mi sono spiegato male... quello che avevo notato io è che lasci
l'error handler di default e cambi il valore di error_reporting tutto si
comporta correttamente (cioè se setti per esempio il tipo di reporting a
E_USER_ERROR e E_USER_WARNING non vedi tutti gli E_ERROR, E_NOTICE,
E_WARNING, etc...).
Se setti un tuo error handler, questa cosa non viene più fatta. Io non ho
indagato se per caso non ci sia scritto da qualche parte che un funzione
"customizzata" di error handler debba tener conto dell'attuale valore di
error_reporting. Io sono andato dritto per questa strada, cioè all'inizio
del mio error handler mi leggo l'attuale valore di error_reporting (per
leggere il valore corrente, basta che non gli passi alcun parametro) e
guardo se il codice di errore della chiamata corrente all'error handler è
compresa fra quelle ammesse in error_reporting.
Secondo me non è neanche un BUG... tutto ciò che ti ho detto è stato
verificato su PHP 4.3, se tu mi dici che si comporta così anche la 5.0...
perchè si comporta così e basta
Ciao
--
Roberto Simoni
www.robertosimoni.it

 wrote in message
news:VAyGd.415072$b5.20...@news3.tin.it...

Oggi sono rinco..., volevo dire:"per me si comporta così e basta"


verificato su PHP 4.3, se tu mi dici che si comporta così anche la 5.0...
Sul 4 ho error_reporting al massimo (E_ALL) e non esiste E_STRICT
quindi non mi sono mai posto il problema. Lo script ha pero' sempre
funzionato bene ed e' solo con il 5 che non ne vuole sapere. Visto
che, secondo me, e' in contraddizione con quanto dice il manuale sono
piu' che convinto che sia un bug pero' mi sembra strano che fino ad
oggi non l'abbiano corretto e che non ci siano state discussioni a
riguardo (ho controllato anche i newsgroup USA e non ho trovato
nulla). Sono solo io che non capisco come funziona ? :-((
bye

 messaggio diverso. Direi magra consolazione.
Se l'attuale errore non è compreso fra quelli indicati da error_reporting,
non loggo niente, ma il programma non si interrompe per forza. Per esempio,
se arriva un E_NOTICE o E_USER_NOTICE, il programma non si interrompe. E nel
mio error handler (molto semplice: logga su file e se c'e' un E_USER_ERROR
manda una mail al webmaster del sito), questi tipi di errore li abilito solo
in fase di sviluppo e test.
--
Roberto Simoni
www.robertosimoni.it