Devo impostare il mio script PHP in alto per disabilitare la segnalazione degli errori per standard rigorosi.
Qualcuno può aiutare?
Devo impostare il mio script PHP in alto per disabilitare la segnalazione degli errori per standard rigorosi.
Qualcuno può aiutare?
Risposte:
Vuoi disabilitare la segnalazione degli errori o semplicemente impedire all'utente di vederlo? Di solito è una buona idea registrare gli errori, anche in un sito di produzione.
# in your PHP code:
ini_set('display_errors', '0'); # don't show any errors...
error_reporting(E_ALL | E_STRICT); # ...but do log them
Verranno registrati nel registro di sistema standard o utilizzeranno la error_log
direttiva per specificare esattamente dove si desidera che vadano gli errori.
php.ini
file, ad esempio se non puoi modificare il codice PHP.
php.ini
o .htaccess
o da qualche parte nel mio codice PHP.
Per nessun errore
error_reporting(0);
o semplicemente non severo
error_reporting(E_ALL ^ E_STRICT);
e se mai vuoi visualizzare nuovamente tutti gli errori, usa
error_reporting(-1);
^
sia buono solo per omettere un tipo di errore. Se si desidera disattivare altri tipi, è necessario utilizzare il E_ALL & ~E_DEPRECATED & ~E_STRICT
formato. O forse il (E_ALL & ~(E_DEPRECATED | E_STRICT))
formato.
ini_set('error_reporting', E_ALL&~E_STRICT);
Sopprimere la segnalazione di errori ini_set('error_reporting', E_ALL^E_STRICT);
^
("xor") anziché & ~
("e non") è una cattiva idea ! ^
dipende dal presupposto che, ad esempio, E_STRICT fa parte di E_ALL e ne farà sempre parte. Ciò è negativo perché E_ALL è cambiato in passato (E_STRICT non era passato, ma è ora da PHP 5.4). Se l'ipotesi non riesce un giorno, ^
non solo rompere, ma effettivamente fare il contrario di quello che dovrebbe fare: Sarà consentirà E_STRICT a causa di come XOR ( ^
funziona). & ~
tuttavia disabiliterà sempre E_STRICT, indipendentemente dal valore corrente di E_ALL. Pertanto & ~
dovrebbe essere usato.
Tutte le soluzioni sopra riportate sono corrette. Ma quando parliamo di una normale applicazione PHP, devono essere inclusi in ogni pagina richiesta. Un modo per risolvere questo problema è attraverso .htaccess
la cartella principale. Solo per nascondere gli errori. [Inserisci una delle righe seguenti nel file]
php_flag display_errors off
O
php_value display_errors 0
Successivamente, per impostare la segnalazione degli errori
php_value error_reporting 30719
Se ti stai chiedendo come è 30719
arrivato il valore , E_ALL (32767), E_STRICT (2048) sono in realtà costanti che contengono un valore numerico e ( 32767 - 2048 = 30719
)
php_admin_value error_reporting
per farlo funzionare (nella configurazione di vhost).
Il valore predefinito del flag error_reporting è E_ALL & ~ E_NOTICE se non impostato in php.ini. Ma in alcune installazioni (in particolare installazioni destinate ad ambienti di sviluppo) ha E_ALL | E_STRICT impostato come valore di questo flag (questo è il valore consigliato durante lo sviluppo ). In alcuni casi, specialmente quando vorrai eseguire alcuni progetti open source, sviluppati prima dell'era di PHP 5.3 e non ancora aggiornati con le migliori pratiche definite da PHP 5.3, nel tuo ambiente di sviluppo, probabilmente ti imbatterai in alcuni messaggi come te stai ricevendo. Il modo migliore per far fronte a questa situazione è impostare solo E_ALL come valore del flag error_reporting , sia inphp.ini o in codice (probabilmente in un front-controller come index.php in web-root come segue:
if(defined('E_STRICT')){
error_reporting(E_ALL);
}
WordPress
Se lavori nell'ambiente wordpress, Wordpress imposta il livello di errore nel file wp-Includes / load.php in funzione wp_debug_mode()
. Quindi devi cambiare il livello DOPO che questa funzione è stata chiamata (in un file non archiviato in git quindi è solo sviluppo), o modificare direttamente la error_reporting()
chiamata
Non ho visto una risposta pulita e adatta a software pronto per la produzione, quindi eccola qui:
/*
* Get current error_reporting value,
* so that we don't lose preferences set in php.ini and .htaccess
* and accidently reenable message types disabled in those.
*
* If you want to disable e.g. E_STRICT on a global level,
* use php.ini (or .htaccess for folder-level)
*/
$old_error_reporting = error_reporting();
/*
* Disable E_STRICT on top of current error_reporting.
*
* Note: do NOT use ^ for disabling error message types,
* as ^ will re-ENABLE the message type if it happens to be disabled already!
*/
error_reporting($old_error_reporting & ~E_STRICT);
// code that should not emit E_STRICT messages goes here
/*
* Optional, depending on if/what code comes after.
* Restore old settings.
*/
error_reporting($old_error_reporting);
E_ALL & ~E_DEPRECATED & ~E_STRICT
per la produzione. Si noti che suggeriscono di disabilitare standard rigorosi.