È possibile modificare il percorso del file di registro per WP_DEBUG_LOG?


18

Uso WP_DEBUG_LOG nel mio ambiente di sviluppo e non ho problemi con debug.log nella directory wp-content.

A volte accendo WP_DEBUG in produzione quando devo eseguire il debug di qualcosa e desidero ancora utilizzare il registro ma vorrei reindirizzarlo a qualcosa al di fuori della mia radice web. È possibile utilizzare WP_DEBUG_LOG?

Risposte:


19

Si scopre che tutto ciò che WP_DEBUG_LOG fa è:

ini_set( 'log_errors', 1 );
ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' );

Pertanto, se desideri modificare la posizione del registro per WP_DEBUG_LOG in un plug-in o in un tema, la risposta del webaware è la migliore. Se vuoi solo averlo modificato all'interno wp-config.php, puoi sostituirlo define( 'WP_DEBUG_LOG', true );con le 2 righe sopra e cambiare il file di registro dove vuoi.


Un paio d'anni dopo, e sembra che non riesca a popolare il file con errori a meno che non sia nella cartella del contenuto di wordpress.
Mike Kormendy,

@MikeKormendy: potrebbe trattarsi di un problema con le autorizzazioni della directory. La posizione in cui si desidera scrivere il file deve essere scrivibile dall'utente che è il proprietario del processo per il runner php. In termini semplici, assicurarsi che la nuova destinazione del file disponga delle stesse autorizzazioni della cartella wp-content attualmente.
Michael Teter,


4

Sì, se aggiungi del codice a un plugin o alle funzioni.php di un tema in questo modo:

if (defined('WP_DEBUG_LOG') && WP_DEBUG_LOG) {
    ini_set( 'error_log', WP_CONTENT_DIR . '/debug.txt' );
}

Modifica: qualcun altro mi ha appena presentato la necessità di farlo, quindi ho lasciato cadere un po 'di codice in un semplice plugin che possono modificare; è disponibile in sostanza se qualcuno lo desidera.


Ho provato ad aggiungere questo al mio file wp-config.php e non funziona. È perché forse wp-config.php viene caricato prima della posizione effettiva nel codice in cui WP_DEBUG_LOG viene utilizzato per definire il file di registro?
jjeaton,

1
Sono stato in grado di farlo funzionare aggiungendolo in un mu-plugin. C'è un modo per me di apportare questa modifica all'interno di wp-config? Suppongo che dovrei solo impostare WP_DEBUG_LOG su false e sostituire ciò che faccio da solo?
jjeaton,

1
Funziona bene se puoi inserire il codice in un plugin o in un tema, grazie!
jjeaton,

Sì, basta scaricarlo in un semplice plugin. Vedi Scrivere un plugin sul codice.
webaware,

1

Sembra che il codice WordPress sia cambiato da quando è stata pubblicata l'ultima risposta a questa domanda. L'attuale funzione wp_debug_mode () relativa a tali costanti include un test per stabilire se WP_DEBUG_LOG equivale a vero o 1 - nel qual caso si comporta come altri l'hanno descritta.

Tuttavia, puoi anche impostare quella costante su una stringa - il tuo percorso file preferito - e il registro verrà generato lì. Ad esempio, è possibile impostarlo su un percorso esterno alle directory per contenuti Web accessibili al pubblico. Potrebbe essere necessario giocare con le autorizzazioni dei file per farlo funzionare.

Sono venuto alla ricerca di questa risposta perché il plug-in di sicurezza di WordFence si lamenta del fatto che il mio registro di debug sia potenzialmente accessibile in / wp-content /

if ( in_array( strtolower( (string) WP_DEBUG_LOG ), array( 'true', '1' ), true ) ) { $log_path = WP_CONTENT_DIR . '/debug.log'; } elseif ( is_string( WP_DEBUG_LOG ) ) { $log_path = WP_DEBUG_LOG; } else { $log_path = false; }


0

Dopo tutto, non è possibile modificare il percorso per il file di debug predefinito. Ciò che è possibile modificare è la posizione per il registro errori MU e la posizione per il file registro errori PHP.

$ds = DIRECTORY_SEPARATOR;
# DEBUG
define( 'WP_DEBUG',               true );
// file: ~/WP_CONTENT_DIR/debug.log
define( 'WP_DEBUG_LOG',           true );
define( 'WP_DEBUG_DISPLAY',       true );
define( 'SAVEQUERIES',            true );
# DEBUG: MU
define( 'DIEONDBERROR',           true );
define( 'ERRORLOGFILE',           WP_CONTENT_DIR.$ds.'logs'.$ds.'mu_error.log' );

@ini_set( 'log_errors',           'On' );
# PHP Error log location
@ini_set( 'error_log',            WP_CONTENT_DIR.$ds.'logs'.$ds.'php_error.log' );

Quindi dovrei disattivare WP_DEBUG_LOG per assicurarmi che il file debug.log non venga mai creato nella mia directory wp-content?
jjeaton,

1
Stai facendo alcune domande per questo giorno e ora :) Non sono nelle condizioni del cervello per rispondere a quelle ora. Torna domani e salta in chat.
Kaiser

0

I tempi cambiano, così come le risposte corrette alle domande tecniche.

L'attuale risposta alla fine del 2019 è semplice. Quando si definisce la "costante" WP_DEBUG_LOG in wp-config.php, ora è possibile fornire un percorso in cui si desidera scrivere il file.

define( 'WP_DEBUG_LOG', '/tmp/wp-errors.log' );

Consulta la documentazione di supporto di Wordpress

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.