Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    direttive error_reporting e display_errors in sviluppo e produzione

    Ciao,

    vorrei alcuni consigli su come settare le due direttive error_reporting e display_errors in una situazione di produzione (sito per utente finale).

    Premesso che in locale per lo sviluppo ho settato

    error_reporting = E_ALL
    display_errors = On

    un volta caricato sul server di produzione cosa mi conviene settare?

    Ho notato ad esempio che adesso sul server di produzione gli errori delle query di MySQL non vengono visualizzati ma semplicemente rimane la pagina vuota, mentre in locale li vedo. Anche se in produzione credo sia più logico avere un minimo di segnalazione su quale sia l'errore altrimenti diventa difficile intervenire.

    Voi cosa mi consigliate?

    Grazie

  2. #2
    tecnicamente lo puoi fare in diversi modi, la logica che normalmente di implementa è questa:

    si imposta una variabile d'ambiente che imposta l'ambiente di esecuzione (sviluppo, test, produzione)
    si impostano i valori per il tipo di ambiente
    a seconda del valore della variabile d'ambiente, si attivano le corrispondenti configurazioni.

    Un esempio tipico di implementazione di questo meccanismo è ad esempio quello che viene utilizzato negli applicativi sviluppati con Zend Framework. Si predispone un file di configurazione diviso in sezioni, ad esempio il classico config.ini: attraverso un .htaccess imposto una variabile d'ambiente che dichiara l'ambiente in cui ci si trova. A questo punto il gioco è fatto: è sufficiente controllare il valore di questa variabile d'ambiente per dare un comportamento adeguato all'applicativo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Aggiungo 3 cose:

    1) in PHP 5 esiste anche la costante E_STRICT che in sviluppo direi che sia il caso di attivarla perchè comoda
    2) esiste la possibilità di settare tramite codice queste 2 direttive al volo, forse è una buona norma poterle ativare/disattivare in caso di problemi del cliente?
    3) ha senso forse attivare un file di log degli errori dove vengono salvati?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Scusa ho letto dopo postato.

    Si è chiaro il tuo discorso ed è quello a cui volevo arrivare. Ma se mi dai alcune dritte sulle 3 domande sopra poste al momento setto questo ambiente, dalla prossima applicazione utilizzerò anche io Zend che sto studiando, ma ci vorrà ancora un po' di tempo...

  5. #5
    Originariamente inviato da aasmdaa
    Aggiungo 3 cose:

    1) in PHP 5 esiste anche la costante E_STRICT che in sviluppo direi che sia il caso di attivarla perchè comoda
    2) esiste la possibilità di settare tramite codice queste 2 direttive al volo, forse è una buona norma poterle ativare/disattivare in caso di problemi del cliente?
    queste direttive le puoi gestire attraverso la funzione ini_set di php:

    http://php.net/manual/en/function.ini-set.php

    che chiaramente dovrai configurare in base al valore della variabile d'ambiente, che puoi impostare da htaccess (ma anche come costante, anche se la prima soluzione è preferibile)

    3) ha senso forse attivare un file di log degli errori dove vengono salvati?
    Assolutamente si: soprattutto per quanto riguarda l'ambiente di produzione, dove chiaramente alcuni tipi di errori non devono assolutamente essere stampati a video.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Mi sfugge cosa intendi per "...configurare in base al valore della variabile d'ambiente...".

    Ovvero se le direttive le imposto tramite le funzioni, l'ambiente non è dettato da queste?

    Esempio:

    if ($Variabile = "Sviluppo") {
    ini_set('display_errors', 1);
    ini_set('error_reporting', E_ALL)
    }

    if ($Variabile = "Produzione") {
    ini_set('display_errors', 1);
    ini_set('error_reporting', 0)
    }

  7. #7
    si certo, diciamo che la scelta migliore sarebbe intervenire ad un livello più "basso" (tipo htaccess) perchè potrebbe essere molto comodo in alcune situazione, ma anche così può andare...invece di mettere il valore in una variabile , però, lo metterei in una costante (anche se in php la "costante" è un pò particolare )

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Ok ma mi interessa l'argomento 'ad un livello più basso'. Nel senso che se voglio agire ad un livello più basso devo modificare sul server i file .htaccess (o php.ini che sia), mentre mi piacerebbe, nel pannello che di solito mi creo per l'amministrazione del sito, aggiungere appunto un checkbox per selezionare al volo il comportamento del server, in modo da fare un primo debug online quando il cliente mi chiama e mi dice che in quella pagina c'è quel problema.

    Credo che per questo caso l'unico modo di gestirla sia appunto quello da COSTANTE ;-) che setti al volo la situazione.

    Una seconda domanda potrebbe essere: la variabile che viene settata resta a livello del server in maniera globale (ovvero qualsiasi utente ci acceda avrà quella situazione) oppure vale solo per quella sessione? E in questo caso devo lanciare il comando una sola volta o ad ogni inizio pagina?

  9. #9
    Originariamente inviato da aasmdaa
    Ok ma mi interessa l'argomento 'ad un livello più basso'. Nel senso che se voglio agire ad un livello più basso devo modificare sul server i file .htaccess (o php.ini che sia), mentre mi piacerebbe, nel pannello che di solito mi creo per l'amministrazione del sito, aggiungere appunto un checkbox per selezionare al volo il comportamento del server, in modo da fare un primo debug online quando il cliente mi chiama e mi dice che in quella pagina c'è quel problema.

    Credo che per questo caso l'unico modo di gestirla sia appunto quello da COSTANTE ;-) che setti al volo la situazione.
    si ho capito cosa intendi, però l'utilizzo delle costanti in PHP è un pò particolare: potresti farti un singleton, forse sarebbe meglio ( ovvero un oggetto "configurazione" che ha come attributo questa impostazione ).

    Una seconda domanda potrebbe essere: la variabile che viene settata resta a livello del server in maniera globale (ovvero qualsiasi utente ci acceda avrà quella situazione) oppure vale solo per quella sessione? E in questo caso devo lanciare il comando una sola volta o ad ogni inizio pagina?
    non la metterei in sessione, perchè non dovrebbe essere dipendente dalla sessione. Una volta impostata, dovrai essere tu nel codice a implementare questa logica:

    Valore variabile = "Sviluppo" => Errori a video

    Valore varibaile = "Produzione" => Errori in file di log

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.