WP_DEBUG și debug.log în WordPress

Configurare și depanare WordPress 2.3.2

Constantele din wp-config.php care pornesc modul de depanare și scriu erorile PHP în wp-content/debug.log în loc să le afișeze.

Sintaxă
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
define( 'SCRIPT_DEBUG', true );

Ce face WP_DEBUG și debug.log

WP_DEBUG pornește modul de depanare: WordPress setează error_reporting( E_ALL ), deci apar toate erorile, avertismentele, notificările și mesajele despre funcții depreciate. Valoarea implicită este false, iar wp-config-sample.php o scrie explicit. Dacă WP_DEBUG nu este definit deloc și tipul de mediu (WP_ENVIRONMENT_TYPE) este development, WordPress îl pornește singur. Constanta apare în cod din 2.3.2; afișarea notificărilor PHP a fost legată de ea în 2.5.

Cele două constante însoțitoare (ambele din WordPress 2.9) funcționează doar când WP_DEBUG este true. WP_DEBUG_LOG cu true scrie erorile în wp-content/debug.log; din 5.1 poate primi și o cale proprie, de exemplu '/var/log/exemplu.ro/wp-erori.log'. WP_DEBUG_DISPLAY (implicit true) controlează dacă erorile apar în HTML-ul paginii; cu false se ascund, iar documentația recomandă și @ini_set( 'display_errors', 0 );.

SCRIPT_DEBUG încarcă versiunile neminificate ale fișierelor CSS și JavaScript din nucleu (util doar dacă le modifici). SAVEQUERIES păstrează interogările SQL în $wpdb->queries. Toate se pun în wp-config.php înainte de linia /* That's all, stop editing! */. Documentația nu recomandă modul de depanare pe site-ul live: folosește-l local sau pe staging, iar dacă îl pornești temporar, șterge apoi debug.log, care se află într-un folder public.

Parametri

Parametru Descriere
WP_DEBUG true / false (boolean, fără ghilimele). Pornește raportarea tuturor erorilor.
WP_DEBUG_LOG true = scrie în wp-content/debug.log; un șir = calea fișierului de log (din 5.1).
WP_DEBUG_DISPLAY true (implicit) afișează erorile în pagină, false le ascunde, null lasă setarea display_errors din PHP.
SCRIPT_DEBUG true încarcă fișierele CSS/JS neminificate din nucleu. Implicit false.
SAVEQUERIES true salvează fiecare interogare, durata și funcția care a apelat-o în $wpdb->queries. Încetinește site-ul.

Exemple

Exemplul 1: Configurația recomandată pentru depanare

Erorile se scriu în debug.log și nu se afișează vizitatorilor. Blocul se pune înainte de linia „That’s all, stop editing!”.

// wp-config.php
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );

/* That's all, stop editing! Happy publishing. */

Rezultat

[25-Oct-2026 09:14:02 UTC] PHP Warning:  Undefined variable $pret in /var/www/exemplu.ro/wp-content/themes/dex-copil/functions.php on line 18
[25-Oct-2026 09:14:02 UTC] PHP Warning:  Undefined array key "oras" in /var/www/exemplu.ro/wp-content/themes/dex-copil/functions.php on line 24

Exemplul 2: Mesaje proprii în debug.log

error_log() scrie în același fișier; print_r( $x, true ) transformă un tablou în text. Verificăm WP_DEBUG ca să nu scriem în log pe site-ul live.

<?php
function dex_log( $date ) {
    if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
        error_log( is_array( $date ) || is_object( $date ) ? print_r( $date, true ) : $date );
    }
}

dex_log( 'dex: rezervare nouă de la Ana' );
dex_log( array( 'oras' => 'Iași', 'persoane' => 4 ) );

Rezultat

[25-Oct-2026 09:15:10 UTC] dex: rezervare nouă de la Ana
[25-Oct-2026 09:15:10 UTC] Array
(
    [oras] => Iași
    [persoane] => 4
)

Exemplul 3: Pornirea din terminal și urmărirea logului

wp config set cu –raw scrie true ca boolean, nu ca șir; tail -f arată erorile noi pe măsură ce apar.

wp config set WP_DEBUG true --raw
wp config set WP_DEBUG_LOG true --raw
tail -f wp-content/debug.log

Ieșire în terminal

Success: Updated the constant 'WP_DEBUG' in the 'wp-config.php' file with the raw value 'true'.
Success: Updated the constant 'WP_DEBUG_LOG' in the 'wp-config.php' file with the raw value 'true'.
[25-Oct-2026 09:16:45 UTC] dex: rezervare nouă de la Mihai

Greșeli frecvente

  • define( 'WP_DEBUG', 'false' ); cu ghilimele: șirul 'false' este evaluat ca adevărat, deci depanarea rămâne pornită.
  • Constantele puse după linia /* That's all, stop editing! */: WordPress s-a încărcat deja și nu le mai ia în seamă.
  • WP_DEBUG_LOG sau WP_DEBUG_DISPLAY fără WP_DEBUG pornit: nu au niciun efect.
  • debug.log lăsat pe server după depanare: e accesibil din browser și poate conține căi și date. Șterge-l sau mută logul în afara folderului public.

Comenzi înrudite

  • wp-config.php: constante: Fișierul de configurare al WordPress: datele bazei de date, prefixul tabelelor, cheile de securitate, adresele site-ului și alte constante.
  • wp_remote_get: Face cereri HTTP din PHP prin HTTP API-ul WordPress și întoarce un tablou cu răspunsul sau un obiect WP_Error.