WP_DEBUG non è impostato, ma continuo a ricevere avvisi

10 giu 2011, 16:36:12
Visualizzazioni: 42.9K
Voti: 21

Se WP_DEBUG non è impostato, da quanto ho capito, non si dovrebbero mai vedere avvisi. Tuttavia, su alcuni siti e su alcuni server, continuo a vederne alcuni. Non tutti gli avvisi che verrebbero visualizzati se WP_DEBUG fosse attivo, ma solo alcuni specifici.

Ho provato a modificare il livello di errore nel php.ini, ma questo sembra non avere alcun effetto sulla visualizzazione degli avvisi, anche se appaiono in quantità diverse su server diversi (cioè nessun avviso in sviluppo, un avviso in staging e qualche avviso in più in produzione).

2
Commenti

Sono sicuramente avvisi o errori fatali?

TheDeadMedic TheDeadMedic
10 giu 2011 18:52:35

Ho avuto esattamente lo stesso problema, si trattava di AVVISI da GravityForms nel mio caso l'output dell'avviso era - Avviso: "continue" come target di switch è equivalente a "break". Intendevi usare "continue 2"? in /plugins/gravityforms/common.php - La risposta di Logic Digger qui sotto ha funzionato copia/incolla per me per risolvere questo al primo tentativo, grazie.

OG Sean OG Sean
14 feb 2020 21:12:23
Tutte le risposte alla domanda 7
2
35

Sostituisci

define('WP_DEBUG', false);

con questo:

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);
18 ott 2015 22:06:40
Commenti

Per favore aggiungi una spiegazione alla tua risposta.

fuxia fuxia
18 ott 2015 22:09:14

Probabilmente gli errori sullo schermo sono disattivati, ma puoi vederli nel log degli errori del tuo server

user2060451 user2060451
28 ott 2016 21:00:58
2
11

WP_DEBUG non ha alcun impatto sull'output degli errori PHP. Oltre all'impostazione error_reporting, imposta display_errors=0 nel tuo file php.ini. È abilitato per default in fase di sviluppo. Ma vorrai disattivarlo sui server di produzione.

11 giu 2011 04:50:13
Commenti

Per parafrasare wp-includes/load.php: if(WP_DEBUG)error_reporting(E_ALL). Ma sembra che diversi plugin stiano modificando error_reporting e display_errors quando probabilmente non dovrebbero farlo.

User User
13 giu 2011 16:24:40

Ah - hai ragione, display_errors era impostato su On nel mio php.ini. Pensavo che WP_DEBUG gestisse tutti gli errori. Grazie.

User User
13 giu 2011 16:32:59
1

È anche possibile che questa riga sia già impostata su false. In tal caso, vedrai il seguente codice:

define('WP_DEBUG', false);

In ogni caso, devi sostituire questa riga con il seguente codice:

ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);

Non dimenticare di salvare le modifiche e caricare nuovamente il file wp-config.php sul server.

1 apr 2018 13:15:07
Commenti

Grazie, questa soluzione ha funzionato per nascondere i warning sul front end per me. WP_DEBUG era già impostato su false.

OG Sean OG Sean
14 feb 2020 21:12:58
0

Per gli ambienti WordPress, solitamente non c'è motivo di utilizzare ini_set perché le costanti definite dal Core di WordPress raggiungono già lo stesso obiettivo. Il funzionamento di PHP prevede che alcune impostazioni possano essere sovrascritte all'interno del tuo CMS (WordPress), in singoli script e persino su una base per utente o per directory (con grande frustrazione di hosting web e agenzie).

Per disabilitare la visualizzazione degli errori nelle pagine di WordPress, l'unica impostazione davvero necessaria è:

define('WP_DEBUG', false);

...perché quando WP_DEBUG è disabilitato, anche le sotto-opzioni diventano inattive:

define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);

Tieni presente che l'opzione confusa WP_DEBUG_LOG si riferisce solo alla creazione di debug.log all'interno della directory wp-content e non influisce su altre impostazioni di log, ecc.

Ancora una volta, le impostazioni in WordPress possono sovrascrivere quelle predefinite di PHP, quindi le tue impostazioni PHP non contano tanto quanto avere le impostazioni corrette nel tuo file wp-config.php, che viene caricato prima degli altri componenti di WP.

Detto questo, è una buona idea implementare impostazioni predefinite come le seguenti in produzione:

error_reporting = E_ERROR | E_WARNING | E_PARSE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/www/logs/error.log
log_errors_max_len = 1024
ignore_repeated_errors = On
ignore_repeated_source = Off
report_memleaks = On
xmlrpc_errors = 0
html_errors = Off

Per un esempio completo, consulta il nostro file php.ini di SlickStack ottimizzato per Nginx e PHP-FPM.

In un caso, dopo ore di ricerca, abbiamo scoperto che un plugin (o tema) stava sovrascrivendo le varie impostazioni di gestione degli errori precedentemente impostate in php.ini e wp-config.php. L'unico modo per prevenire questo comportamento è rimuovere il plugin o tema WordPress che sta cercando di "hackerare" le tue impostazioni PHP, o chiedere loro di rimuoverlo perché è una pessima pratica per le estensioni sovrascrivere le opzioni di debug del tuo CMS.

In SlickStack, abbiamo creato uno script Bash che "segnala" qualsiasi riga ini_set e error_reporting nei file PHP delle directory /themes/ e /plugins/, evidenziando tali istanze utilizzando un MU Plugin (script PHP) che visualizza un elenco di questi "hack" nella Dashboard di Amministrazione di WP.

20 nov 2019 14:10:28
1

Prova a disabilitare/soprimere tutti gli avvisi/notifiche di errore nel tuo file wp-config.php (in cima). Ad ogni modo: Gli errori non sono negativi. Ti danno l'opportunità di correggere il tuo codice.

10 giu 2011 17:47:11
Commenti

Penso che siano stati i plugin di altre persone a modificare l'error_reporting, causando questo problema.

User User
13 giu 2011 16:41:41
0

Nessuna delle soluzioni sopra indicate ha funzionato per me.

Per me, la soluzione è stata aggiungere un file php nella cartella mu-plugins. Basta creare un file php e aggiungere la seguente riga.

error_reporting(E_ALL & ~( E_NOTICE ));

Dopodiché, caricarlo nella cartella mu-plugins (se la cartella non esiste, crearla nella cartella wp-content).

12 dic 2021 20:08:31
0

Nel mio caso il problema era che WP_DEBUG era impostato a 'false' invece di false, il che presumo venga valutato come true, trattandosi di una stringa.

Quindi prova con

define('WP_DEBUG', false);

se hai

define('WP_DEBUG', 'false');
5 ago 2024 12:13:21