Ho un po 'di codice PHP. Quando lo eseguo, viene visualizzato un messaggio di avviso.Rimuovere i messaggi di avviso in PHP
Come posso rimuovere/sopprimere/ignorare questi messaggi di avviso?
Ho un po 'di codice PHP. Quando lo eseguo, viene visualizzato un messaggio di avviso.Rimuovere i messaggi di avviso in PHP
Come posso rimuovere/sopprimere/ignorare questi messaggi di avviso?
È necessario correggere qualsiasi problema che causa l'avviso, ma è possibile controllare la visibilità degli errori con error_reporting. Per saltare i messaggi di avviso, si potrebbe usare qualcosa come:
error_reporting(E_ERROR | E_PARSE);
Si potrebbe sopprimere l'avviso utilizzando error_reporting ma il modo migliore è quello di correggere lo script in primo luogo.
Se non sai come, modifica la tua domanda e mostraci la riga in questione e l'avviso che viene visualizzato.
Si può mettere un @ di fronte al vostro chiamata di funzione per eliminare tutti i messaggi di errore.
@yourFunctionHere();
Questo nasconde l'errore, sta ancora accadendo. Gli errori fanno rallentare PHP, quindi è meglio correggere l'errore se possibile. L'uso di @ rallenta persino il codice quando non c'è un errore. http://vega.rd.no/articles/php-performance-error-suppression – dprevite
A volte (sfortunatamente) davvero non hai scelta. Ad esempio, la funzione PHP parse_url() genera Warnings per gli URL "severamente malformati" - che è probabilmente un bug poiché la funzione restituisce false in questo caso. Quindi è necessario tollerare questi avvertimenti PHP nell'output del programma (potrebbe non essere accettabile per le applicazioni parser/validator), sopprimere gli avvertimenti in qualche modo o aggirare il comportamento di PHP rotto scrivendo il proprio parser/validatore per gli URL. In questo caso, scelgo la @. – Peter
IMPORTANTE: utilizzare questo metodo iff (1) non è possibile risolvere il problema che genera l'avviso né (2) nascondere gli avvisi dagli utenti finali tramite php error_reporting ... Nascondere gli avvisi dai propri sviluppatori NON è una soluzione. –
siano soppressi gli avvisi, lasciando tutti gli altri la segnalazione degli errori abilitati:
error_reporting(E_ALL^E_WARNING);
Non esattamente rispondere alla domanda, ma penso che questo sia un compromesso meglio in alcune situazioni:
Ho avuto un messaggio di avviso come risultato di un'istruzione printf() in una libreria di terze parti. Sapevo esattamente quale fosse la causa: un intervento temporaneo mentre la terza parte risolveva il loro codice. Sono d'accordo sul fatto che gli avvertimenti non dovrebbero essere soppressi, ma non ho potuto dimostrare il mio lavoro a un cliente con il messaggio di avviso che appare sullo schermo. La mia soluzione:
printf('<div style="display:none">');
...Third-party stuff here...
printf('</div>');
L'avviso era ancora nella pagina di origine come promemoria per me, ma invisibile al client.
Personalmente, userei ['ob_start()'] (http://php.net/manual/en/function.ob-start.php) e ['ob_end_clean()'] (http: // php. net/manual/en/function.ob-end-clean.php). In questo modo le cose non vengono nemmeno inviate al browser (cosa che fa qui). – h2ooooooo
Ecco perché ho incluso "alcune situazioni", "gli avvisi non dovrebbero essere soppressi" e "promemoria per me". – DaveWalley
Prima di votarmi di più, per favore, leggi la mia risposta. Nota "terze parti", "compromesso" e il commento sopra. Ho aggiunto questa risposta nel caso in cui qualcun altro si trovasse nella stessa situazione in cui mi trovavo, e in quella situazione specifica, questo mi ha salvato mentre tutte le altre risposte non sarebbero state altrettanto buone. La prossima volta penserò due volte ad essere utile. – DaveWalley
Se non si desidera visualizzare gli avvisi e gli errori usano
// Turn off all error reporting
error_reporting(0);
Penso che soluzione migliore è la configurazione di .htaccess In questo modo non dovete modificare il codice di applicazione. Qui ci sono le direttive per Apache2
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
nel core di PHP per nascondere messaggio di avviso impostare error_reporting (0) in cima alla comuni includono file o singoli file.
In Wordpress hide Warnings and Notices aggiuntivo seguente codice nel file wp-config.php
ini_set('log_errors','On');
ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL);
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Se si desidera eliminare gli avvertimenti e alcuni altri tipi di errore (ad esempio, comunicazioni) durante la visualizzazione di tutti gli altri errori, è possibile Non:
error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE);
lo faccio come questo nel mio php.ini:
error_reporting = E_ALL & ~ E_WARNING & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED
che registra solo gli errori fatali e nessun avviso
'E_ALL^E_WARNING', abilitando tutte le segnalazioni di errori oltre agli avvertimenti, sembra una scelta migliore di argomento per' error_reporting'. –
in genere sono d'accordo, nel mio caso la generazione del messaggio di avviso era comportamento previsto perché faceva parte dei miei test unitari. – pgee70