È possibile modificare la posizione del file di log per WP_DEBUG_LOG?

1 feb 2013, 21:43:33
Visualizzazioni: 33.5K
Voti: 28

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

A volte attivo WP_DEBUG in produzione quando ho bisogno di fare debug di qualcosa, e voglio ancora utilizzare il log ma vorrei reindirizzarlo in una posizione esterna alla mia root web. È possibile farlo usando WP_DEBUG_LOG?

0
Tutte le risposte alla domanda 7
0
23

Sembra che la maggior parte delle risposte qui non siano più valide per la versione 5.1 di WP e superiori a causa di questa modifica: https://make.wordpress.org/core/2019/01/23/miscellaneous-developer-focused-changes-in-5-1/

Ora puoi definire WP_DEBUG_LOG come un percorso in wp-config.php se vuoi sovrascrivere il file predefinito wp-content/debug.log, ad esempio:

define( 'WP_DEBUG_LOG', 'wp-content/uploads/debug.log' );
14 mag 2019 21:25:23
3
22

Si scopre che tutto ciò che fa WP_DEBUG_LOG è:

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

Quindi, se vuoi cambiare la posizione del log per WP_DEBUG_LOG in un plugin o tema, la risposta di webaware è la migliore. Se vuoi semplicemente cambiarlo all'interno di wp-config.php puoi sostituire define( 'WP_DEBUG_LOG', true ); con le 2 righe sopra e modificare il file di log ovunque tu voglia.

3 feb 2013 01:01:30
Commenti

Dopo un paio d'anni, non riesco a far popolare il file con gli errori a meno che non sia nella cartella dei contenuti di WordPress.

Mike Kormendy Mike Kormendy
29 gen 2017 07:39:50

@MikeKormendy - potrebbe essere un problema di permessi della directory. La posizione in cui desideri scrivere il file deve essere scrivibile dall'utente che è il proprietario del processo per il runner PHP. In termini semplici, assicurati che la nuova destinazione del file abbia gli stessi permessi della cartella wp-content.

Michael Teter Michael Teter
23 dic 2019 18:54:03

Questo mi restituisce l'errore 500 :(

skywind skywind
4 ott 2021 13:13:33
0

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

La risposta attuale a fine 2019 è semplice. Quando si definisce la "costante" WP_DEBUG_LOG in wp-config.php, ora è possibile specificare il percorso in cui si vuole che il file venga scritto.

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

Vedi Documentazione di Supporto WordPress

23 dic 2019 18:38:16
4

Sì, se aggiungi del codice a un plugin o al functions.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 fare questo, quindi ho inserito del codice in un semplice plugin che possono modificare; è disponibile come gist se qualcuno lo desidera.

2 feb 2013 03:38:32
Commenti

Ho provato ad aggiungere questo al mio file wp-config.php e non funziona. È perché wp-config.php viene caricato prima del punto effettivo nel codice dove WP_DEBUG_LOG viene utilizzato per definire il file di log?

jjeaton jjeaton
3 feb 2013 00:25:11

Sono riuscito a farlo funzionare aggiungendolo in un mu-plugin. C'è un modo per fare questa modifica direttamente in wp-config? Suppongo che dovrei semplicemente impostare WP_DEBUG_LOG su false e sostituire ciò che fa manualmente?

jjeaton jjeaton
3 feb 2013 00:27:59

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

jjeaton jjeaton
3 feb 2013 01:02:06

Sì, basta inserirlo in un semplice plugin. Vedi Scrivere un plugin sul codex.

webaware webaware
3 feb 2013 01:04:24
0

Sembra che il codice di WordPress sia cambiato dall'ultima risposta a questa domanda. L'attuale funzione wp_debug_mode() relativa a queste costanti include un test per verificare se WP_DEBUG_LOG è uguale a true o 1 -- in tal caso si comporta come altri hanno descritto.

Tuttavia, puoi anche impostare quella costante come una stringa -- il percorso del file preferito -- e il log verrà scritto lì. Ad esempio, puoi impostarlo su un percorso esterno alle tue directory accessibili pubblicamente via web. Potresti dover modificare i permessi dei file per farlo funzionare.

Ho cercato questa risposta perché il plugin di sicurezza WordFence segnala che il mio debug log potrebbe essere 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; }

8 mar 2019 00:50:47
2

Per quanto ne so, non è possibile modificare la posizione del file di debug predefinito. Quello che puoi modificare è la posizione del log degli errori MU e la posizione del file di log degli 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' );
# Posizione del log degli errori PHP
@ini_set( 'error_log',            WP_CONTENT_DIR.$ds.'logs'.$ds.'php_error.log' );
1 feb 2013 21:57:27
Commenti

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

jjeaton jjeaton
1 feb 2013 21:59:01

Stai facendo parecchie domande per quest'ora del giorno :) Non sono nella condizione mentale di rispondere adesso. Torna domani e salta in chat.

kaiser kaiser
1 feb 2013 22:47:02
0

Ho avuto questo problema. Quello che ho fatto è stato aggiungere quanto segue al file wp-config:

define('WP_DEBUG', true);
define( 'WP_DEBUG_DISPLAY', false );
define( 'WP_DEBUG_LOG', '/var/log/wp-debug.log' );

Poi ho modificato i permessi del file wordpress-debug.log con chown:

chown -R www-data:www-data /var/log/wp-debug.log

Nel mio caso si trattava di un problema di permessi. Utilizzando chown per impostare i permessi del file all'utente/gruppo di WordPress ho risolto.

7 lug 2023 06:51:25