Risposte:
Dovresti davvero risolvere qualunque cosa stia causando l'avvertimento, ma puoi controllare la visibilità degli errori con error_reporting()
. Per saltare i messaggi di avviso, è possibile utilizzare qualcosa come:
error_reporting(E_ERROR | E_PARSE);
E_ALL ^ E_WARNING
, abilitando tutte le segnalazioni di errori oltre agli avvisi, sembra una scelta migliore per l'argomento error_reporting
.
È possibile inserire una @ davanti alla chiamata della funzione per eliminare tutti i messaggi di errore.
@yourFunctionHere();
dns_get_record
lanceranno avvisi. Il tuo codice potrebbe compensare l'avviso ma li lancia comunque. La disattivazione della segnalazione errori funziona sul server di produzione, ma non sul server di sviluppo. Se stai generando contenuto XML, l'avviso impedirà al browser di non eseguire il rendering perché il server sta inviando XML non valido causato dall'avviso. A volte lo desideri allo sviluppo, ma non per qualcosa causato da un errore di ricerca DNS temporaneo che già compensi.
Se non si desidera mostrare avvisi e errori, utilizzare
// Turn off all error reporting
error_reporting(0);
in Core Php per nascondere il messaggio di avviso impostare error_reporting (0) nella parte superiore del file include comune o singolo file.
In Wordpress nascondi Avvertenze e avvisi aggiungi il 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);
Non rispondo esattamente alla domanda, ma penso che questo sia un compromesso migliore in alcune situazioni:
Ho ricevuto un messaggio di avviso a seguito di un'istruzione printf () in una libreria di terze parti. Sapevo esattamente quale fosse la causa: una soluzione temporanea mentre le terze parti correggevano il loro codice. Accetto che gli avvisi non debbano 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'avvertimento era ancora nell'origine della pagina come promemoria per me, ma invisibile al client.
ob_start()
e ob_end_clean()
invece. In questo modo le cose non vengono nemmeno inviate al browser (cosa che fa qui).
Penso che la soluzione migliore sia la configurazione di .htaccess In questo modo non è necessario modificare il codice dell'applicazione. Ecco 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
È possibile eliminare l'avviso utilizzando error_reporting ma il modo migliore è correggere innanzitutto lo script.
Se non sai come, modifica la tua domanda e mostraci la riga in questione e l'avviso che viene visualizzato.
C'è già una risposta con Error Control Operator ma manca di spiegazioni. È possibile utilizzare l' @
operatore con ogni espressione e nasconde errori (tranne errori irreversibili).
@$test['test']; //PHP Notice: Undefined variable: test
@(14/0); // PHP Warning: Division by zero
//This is not working. You can't hide Fatal Errors this way.
@customFuntion(); // PHP Fatal error: Uncaught Error: Call to undefined function customFuntion()
Per il debug è un metodo rapido e perfetto. Ma non dovresti mai usarlo in produzione né includere permanentemente nella tua versione locale. Ti darà molte irritazioni inutili.
Dovresti invece considerare:
1. Errore nella segnalazione delle impostazioni come indicato nella risposta accettata.
error_reporting(E_ERROR | E_PARSE);
o dalle impostazioni INI di PHP
ini_set('display_errors','Off');
2. Eccezioni di cattura
try {
$var->method();
} catch (Error $e) {
// Handle error
echo $e->getMessage();
}