Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Configurazione php.ini] La difficile arte di far apparire gli errori

    Ok, dopo l'ennesimo errore che PHP si rifiuta di farmi stamparmi fuori (con relativi insulti verso il mondo intero) ho deciso che prima di proseguire ulteriormente a lavorare devo risolvere questo "piccolo" problema sul server, costi quel che costi sono stanco di cercare l'errore spargendo per il codice vari print "ciao" print "ciao2" print "cazzabubu" per vedere a quel punto si blocca...anche perchè quando iniziano a intrecciarsi gli oggetti e quant'altro la cosa si fa difficile...

    orbene, cosa non mi dice? fintanto che dimentico una ; alla fine di una riga vengo immediatamente richiamato al rispetto della sintassi con un bel parse error, se però mi dimentico di includere un file dove viene definita una classe e tento di istanziare la classe per creare l'oggetto, il parser non sputa fuori nulla...

    ho provato pure a mettere nel php.ini E_ALL alla voce error_reporting ma nulla, ho provato a disseminare i sorgenti di error_reporting(E_STRICT) ma nulla da fare...

    attualmente la porzione di php.ini interessata ha le seguenti impostazioni

    error_reporting = E_ALL
    display_errors = On
    display_startup_errors = On
    log_errors = On
    log_errors_max_len = 1024
    ignore_repeated_errors = Off
    ignore_repeated_source = Off


    che dite, è grave? può essere che dal momento che chiedo sia di loggare gli errori che mostrarli, le due direttive vadano in conflitto?

    ciao, grazie, ratatuia

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Se vuoi ti incollo qui le mie impostazioni:

    codice:
    error_reporting  =  E_ALL & ~E_NOTICE
    display_errors = On
    display_startup_errors = Off
    log_errors = Off
    log_errors_max_len = 1024
    ignore_repeated_errors = Off
    ignore_repeated_source = Off
    report_memleaks = On
    track_errors = Off
    Comunque quando lavoro su qualche server nel quale non posso toccare il php.ini metto queste linee a inizio file per avere il massimo debug:

    codice:
    error_reporting(E_ALL); // report all errors
    ini_set("display_errors", 1);
    ini_set("display_startup_errors", 1);
    p.s. lo so che chiedo una banalità, ma ogni volta che tocchi il php.ini riavvii il server web vero?

    ciao

  3. #3
    codice:
    function errorManager($errno, $errstr, $errfile, $errline){
    	echo "<div>#{$errno} {$errfile} - line {$errline}<hr />{$errstr}</div>";
    	ob_flush();
    };
    
    $error = error_reporting(defined('E_STRICT') ? E_STRICT : E_ALL);
    set_error_handler('errorManager');
    
    // fai quello che devi fare ... 
    
    // se vuoi ripristinare come prima ...
    // error_reporting($error);
    // restore_error_handler();
    se vuoi sfruttare il tutto per fare debug (no print("ciao") o echo "forse") fai
    trigger_error("... e fin qui tutto ok ...", 0);
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  4. #4
    uh, non mi ero accorto delle risposte (per le quali ringrazio), ora provo a fare qualcosa prova...

    domanda: E_NOTICE è più puntiglioso di E_ALL?

    comunque sì, riavvio sempre apache quando apporto le modifiche sul php.ini...

  5. #5
    Originariamente inviato da Ratatuia
    uh, non mi ero accorto delle risposte (per le quali ringrazio), ora provo a fare qualcosa prova...

    domanda: E_NOTICE è più puntiglioso di E_ALL?
    E_ALL comprende E_NOTICE.
    Il valore impostato viene intrerpretato come una mappa di Bit, ad esempio facendo error_reporting(E_STRICT); come hai detto che facevi, praticamente stavi disattivando quasi tutto.
    Per avere tutti gli errori compresi gli strict devi fare error_reporting(E_ALL | E_STRICT);

  6. #6
    Originariamente inviato da skidx
    E_ALL comprende E_NOTICE.
    Il valore impostato viene intrerpretato come una mappa di Bit, ad esempio facendo error_reporting(E_STRICT); come hai detto che facevi, praticamente stavi disattivando quasi tutto.
    Per avere tutti gli errori compresi gli strict devi fare error_reporting(E_ALL | E_STRICT);

    ah, ok...pensavo che fosse il livello "paranoico" e quindi inglobasse anche E_ALL...

    cmq nel mentre ho trovato anche l'errore, ovvero una proprietà era impostata su private sia nella classe figlio che nella classe padre, però non mi dava nessun errore...mo vedo...

  7. #7
    dovrei aver trovato il tipo di errore che non mi viene segnalato da php ma che cmq provoca un blocco dell'esecuzione...mi confermate che normalmente non viene fuori?


    in poche parole, se cerco di richiamare un metodo su un riferimento ad un oggetto, e tale oggetto non fa parte dell'oggetto o restituisco un riferimento errato ad un oggetto causa un errore che non mi viene segnalato...

    giusto per chiarire quello che succede, se ho $oggetto->getOggetto2()->getElement($i)->metodo();

    se sbaglio a chiamare metodo al posto di metodo2 oppure getOggetto2 o getElement non restituiscono un riferimento corretto all'oggetto richiesto, non mi viene segnalato l'errore...

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.