WP_DEBUG nu este setat, dar încă primesc avertismente

10 iun. 2011, 16:36:12
Vizualizări: 42.9K
Voturi: 21

Dacă WP_DEBUG nu este setat, după cum înțeleg, nu ar trebui să vezi niciodată avertismente. Dar pe unele site-uri de pe anumite servere, încă văd câteva. Nu toate avertismentele care ar fi afișate dacă WP_DEBUG ar fi setat, ci doar câteva selective.

Am încercat să schimb nivelul de eroare în php.ini, dar acest lucru pare să nu aibă niciun efect asupra apariției avertismentelor, dar ele apar în cantități diferite pe servere diferite (adică fără avertismente în dezvoltare, un avertisment în staging și câteva avertismente în plus în producție).

2
Comentarii

Sunt acestea cu siguranță avertismente sau erori fatale?

TheDeadMedic TheDeadMedic
10 iun. 2011 18:52:35

Am avut exact aceeași problemă, erau AVERTISMENTE din GravityForms în cazul meu, ieșirea avertismentului era - Avertisment: țintirea "continue" în switch este echivalentă cu "break". Voiai să folosești "continue 2"? în /plugins/gravityforms/common.php - Răspunsul lui Logic Digger de mai jos a funcționat copy/paste pentru mine pentru a remedia acest lucru din prima încercare, mulțumesc.

OG Sean OG Sean
14 feb. 2020 21:12:23
Toate răspunsurile la întrebare 7
2
35

Înlocuiți

define('WP_DEBUG', false);

cu acest cod:

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 oct. 2015 22:06:40
Comentarii

Te rog să adaugi o explicație la răspunsul tău.

fuxia fuxia
18 oct. 2015 22:09:14

Probabil afișarea erorilor este dezactivată, dar le poți vedea pe server în jurnalul de erori

user2060451 user2060451
28 oct. 2016 21:00:58
2
11

WP_DEBUG nu are niciun impact asupra afișării erorilor PHP. Pe lângă setarea error_reporting, setează display_errors=0 în fișierul tău php.ini. În mod implicit, această opțiune este activată pentru dezvoltare. Dar va trebui să o dezactivezi pe serverele de producție.

11 iun. 2011 04:50:13
Comentarii

Parafrazând wp-includes/load.php: if(WP_DEBUG)error_reporting(E_ALL). Dar se pare că mai multe plugin-uri se amestecă cu error_reporting și display_errors când probabil nu ar trebui.

User User
13 iun. 2011 16:24:40

Ah - ai dreptate, display_errors era setat pe On în php.ini. Am presupus că WP_DEBUG se ocupă de toate erorile. Mulțumesc.

User User
13 iun. 2011 16:32:59
1

De asemenea, este posibil ca această linie să fie deja setată pe false. În acest caz, veți vedea următorul cod:

define('WP_DEBUG', false);

În orice caz, trebuie să înlocuiți această linie cu următorul cod:

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

Nu uitați să salvați modificările și să încărcați fișierul wp-config.php înapoi pe server.

1 apr. 2018 13:15:07
Comentarii

Mulțumesc, asta a funcționat pentru a ascunde avertismentele pe partea de front-end pentru mine. WP_DEBUG era deja setat pe false.

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

Pentru mediile WordPress, de obicei nu există niciun motiv să folosești ini_set deoarece constantele definite de WordPress Core realizează deja acest lucru. Modul în care funcționează PHP este că anumite setări pot fi suprascrise în cadrul CMS-ului tău (WordPress), în scripturi individuale și chiar pe o bază per-utilizator sau per-director (mult spre frustrarea gazdelor web și a agențiilor).

Pentru a dezactiva afișarea erorilor pe pagină în WordPress, singura setare de care ai nevoie este:

define('WP_DEBUG', false);

...deoarece când WP_DEBUG este dezactivat, sub-opțiunile devin inactive:

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

Ține minte că opțiunea confuză WP_DEBUG_LOG se referă doar la crearea fișierului debug.log în directorul wp-content și nu afectează alte setări de logare etc.

Din nou, setările din WordPress pot suprascrie setările implicite PHP, așadar setările tale PHP nu contează atât de mult pe cât contează setările corecte din fișierul tău wp-config.php, care se încarcă înaintea altor componente WordPress.

Totuși, este o idee bună să implementezi setări implicite precum cele de mai jos în mediul de producție:

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

Pentru un exemplu complet, consultă fișierul SlickStack php.ini optimizat pentru Nginx și PHP-FPM.

Într-un caz, după ore de cercetare, am realizat că un plugin (sau o temă) suprascria diverse setări de gestionare a erorilor stabilite anterior în php.ini și wp-config.php. Singura modalitate de a preveni acest lucru este eliminarea pluginului sau a temei WordPress care încearcă să "hack-uiască" setările tale PHP sau să le ceri să o înlăture deoarece este o practică foarte proastă ca extensiile să suprascrie opțiunile de depanare ale CMS-ului tău.

În SlickStack, am creat un script Bash care "marchează" orice linii ini_set și error_reporting din fișierele PHP din directoarele /themes/ și /plugins/, evidențiind astfel de instanțe folosind un MU Plugin (script PHP) care afișează o listă cu astfel de "hack-uri" în Panoul de Administrare WordPress.

20 nov. 2019 14:10:28
1

Încearcă să dezactivezi/suprimi toate avertismentele/notificările de eroare în fișierul tău wp-config.php (în partea de sus). Oricum: Erorile nu sunt ceva rău. Ele îți oferă șansa de a-ți repara codul.

10 iun. 2011 17:47:11
Comentarii

Cred că au fost alte plugin-uri care au intervenit în error_reporting și au cauzat această problemă.

User User
13 iun. 2011 16:41:41
0

Nici una dintre soluțiile de mai sus nu a funcționat pentru mine.

Pentru mine, soluția a fost să adaug un fișier php în folderul mu-plugins. Pur și simplu creează un fișier php și adaugă următoarea linie.

error_reporting(E_ALL & ~( E_NOTICE ));

După aceea, încarcă-l în folderul mu-plugins (dacă folderul nu există, creează-l în folderul wp-content).

12 dec. 2021 20:08:31
0

În cazul meu, problema era că WP_DEBUG era setat la 'false' și nu la false, ceea ce cred că este evaluat ca true, deoarece este un șir de caractere.

Deci încercați

define('WP_DEBUG', false);

dacă aveți

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