Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    81

    escludere una cartella dalla funzione error_log

    Ciao a tutti,
    sto cercando di creare una funzione che mi invii nella mia casella di posta eventuali errori che si possono presentare nel corso del tempo nei miei siti.
    per ora ho recuperato una funzioncina, secondo me, molto carina:

    Codice PHP:
    function errorHandler($code,$message,$filename,$lineNumber){
                
                
    $messaggio '<h1>&Egrave; stato riscontrato un errore!</h1>';
                
    $messaggio.= '

    [b]Indirizzo:[/b] '
    .$_SERVER['REQUEST_URI'].'</p>';
                
    $messaggio.= '

    [b]User agent:[/b] '
    .$_SERVER['HTTP_USER_AGENT'].'</p>';
                
    $messaggio.= '

    [b]Indirizzo ip:[/b] '
    .$_SERVER['REMOTE_ADDR'].'</p>';
                if(isset(
    $_SERVER['HTTP_REFERER']))
                    
    $messaggio.= '

    [b]Referer:[/b] '
    .$_SERVER['HTTP_REFERER'].'</p>';
                
    $messaggio.= '

    [b]Data:[/b] ['
    .date('r').']</p>';
                
    $messaggio.= '

    [b]Errore:[/b] '
    .$message.' - '.$code.'</p>';
                
    $messaggio.= '

    [b]Linea:[/b] '
    .$lineNumber.'</p>';
                
    $messaggio.= '

    [b]File:[/b] '
    .$filename.'</p>';
                
                
    error_log($messaggio."\r\n\n\n",1,"mia@casella.posta","Content-type: text/html; charset=utf-8\r\n");
            }
            
    set_error_handler("errorHandler"); 
    così, tramite l'uso di error_log() arriva nella mia casella di posta la segnalazione dell'errore.
    mi arrivano però centinaia di errori presenti nelle librerie di terze parti come PEAR.
    come posso escludere dall'analisi la cartella che contiene codici di terze parti?
    esistono soluzioni migliori?


  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non puoi "bypassare" pezzi di codice, ma solo "flussi"... in pratica puoi cambiare più volte set_error_handler... un'altra possibilità è selezionare il livello d'errore da filtrare (mi sembra più sensato)

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    81
    Concettualmente pensavo anch'io alla seconda soluzione, solo che a livello di script sono un cane.
    Ho provato con:

    Codice PHP:
    error_reporting  (E_ERROR E_WARNING E_PARSE); 
    ma a quanto pare non dà effetti: mi segnala lo stesso i notice e tutti gli altri errori "veniali"...
    C'è un modo per filtrare gli errori all'interno della mia funzioncina, oppure posso sfruttare in qualche maniera error_log()?
    La guida ufficiale purtroppo non mi è di aiuto...

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    81
    Trovato!
    praticamente ho fatto uno switch sfruttando la varibile $code e sfruttando il valore numerico dell'errore, secondo la tabella:

    1 E_ERROR
    2 E_WARNING
    4 E_PARSE
    8 E_NOTICE
    16 E_CORE_ERROR
    32 E_CORE_WARNING
    64 E_COMPILE_ERROR
    128 E_COMPILE_WARNING
    256 E_USER_ERROR
    512 E_USER_WARNING
    1024 E_USER_NOTICE
    2047 E_ALL


    dovrebbe andare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.