Este posibil să schimbi locația fișierului de log pentru WP_DEBUG_LOG?

1 feb. 2013, 21:43:33
Vizualizări: 33.5K
Voturi: 28

Folosesc WP_DEBUG_LOG în mediul meu de dezvoltare și nu am probleme cu faptul că debug.log se află în directorul wp-content.

Uneori activez WP_DEBUG în producție când trebuie să debugez ceva și vreau în continuare să folosesc log-ul, dar aș dori să-l redirectez undeva în afara directorului web root. Este posibil acest lucru folosind WP_DEBUG_LOG?

0
Toate răspunsurile la întrebare 7
0
23

Se pare că majoritatea răspunsurilor de aici nu mai sunt valabile pentru versiunea WP 5.1 și cele ulterioare din cauza acestei modificări: https://make.wordpress.org/core/2019/01/23/miscellaneous-developer-focused-changes-in-5-1/

Acum puteți defini WP_DEBUG_LOG ca o cale în wp-config.php dacă doriți să suprascrieți fișierul implicit wp-content/debug.log, de exemplu:

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

Se pare că tot ce face WP_DEBUG_LOG este:

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

Deci, dacă dorești să schimbi locația fișierului de log pentru WP_DEBUG_LOG într-un plugin sau temă, răspunsul lui webaware este cel mai bun. Dacă vrei doar să îl schimbi în cadrul fișierului wp-config.php, poți înlocui linia define( 'WP_DEBUG_LOG', true ); cu cele două linii de mai sus și să modifici calea fișierului de log în orice locație dorești.

3 feb. 2013 01:01:30
Comentarii

Au trecut câțiva ani și nu reușesc să populez fișierul cu erori decât dacă se află în folderul de conținut WordPress.

Mike Kormendy Mike Kormendy
29 ian. 2017 07:39:50

@MikeKormendy - ar putea fi o problemă de permisiuni ale directorului. Locația în care dorești să scrii fișierul trebuie să fie accesibilă pentru scriere de către utilizatorul care este proprietarul procesului pentru executantul php. În termeni simpli, asigură-te că destinația noului fișier are aceleași permisiuni pe care le are în prezent folderul wp-content.

Michael Teter Michael Teter
23 dec. 2019 18:54:03

Pentru mine, acest lucru returnează eroarea 500(

skywind skywind
4 oct. 2021 13:13:33
0

Timpurile se schimbă, la fel și răspunsurile corecte la întrebările tehnice.

Răspunsul actual de la sfârșitul anului 2019 este simplu. Când definiți "constantă" WP_DEBUG_LOG în wp-config.php, acum puteți specifica o cale unde doriți să fie scris fișierul.

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

Consultați Documentația de Suport WordPress

23 dec. 2019 18:38:16
4

Da, dacă adaugi un cod în functions.php al unui plugin sau al unei teme, astfel:

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

Editare: cineva tocmai mi-a prezentat nevoia de a face asta, așa că am inclus un cod într-un plugin simplu pe care îl pot edita; este disponibil ca un gist dacă cineva dorește.

2 feb. 2013 03:38:32
Comentarii

Am încercat să adaug asta în fișierul meu wp-config.php și nu funcționează. Se întâmplă asta pentru că wp-config.php este încărcat mai devreme decât locul actual din cod unde WP_DEBUG_LOG este folosit pentru a defini fișierul de log?

jjeaton jjeaton
3 feb. 2013 00:25:11

Am reușit să fac asta să funcționeze adăugând-o într-un mu-plugin. Există vreo modalitate de a face această modificare doar în wp-config? Presupun că ar trebui doar să seteze WP_DEBUG_LOG la false și să înlocuiesc eu ceea ce face?

jjeaton jjeaton
3 feb. 2013 00:27:59

Aceasta funcționează bine dacă poți pune codul într-un plugin sau temă, mulțumesc!

jjeaton jjeaton
3 feb. 2013 01:02:06

Da, pur și simplu adaugă-l într-un plugin simplu. Vezi Cum să scrii un plugin în codex.

webaware webaware
3 feb. 2013 01:04:24
0

Se pare că codul WordPress s-a schimbat de la ultimul răspuns la această întrebare. Funcția actuală wp_debug_mode() legată de acele constante include un test pentru a verifica dacă WP_DEBUG_LOG este egal cu true sau 1 - în acest caz, se comportă așa cum au descris alții.

Totuși, poți seta acea constantă și ca un șir de caractere - calea preferată către fișier - iar jurnalul va fi scris acolo. De exemplu, poți seta o cale în afara directorului accesibil publicului. Poate fi necesar să ajustezi permisiunile fișierelor pentru a face acest lucru posibil.

Am căutat acest răspuns deoarece plugin-ul de securitate WordFence avertizează că jurnalul de depanare ar putea fi accesibil în /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

Din câte știu, nu poți schimba locația fișierului implicit de depanare (debug). Ceea ce poți schimba este locația pentru jurnalul de erori MU (Must-Use) precum și locația pentru fișierul de jurnal de erori PHP.

$ds = DIRECTORY_SEPARATOR;
# DEBUG
define( 'WP_DEBUG',               true );
// fișier: ~/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' );
# Locația jurnalului de erori PHP
@ini_set( 'error_log',            WP_CONTENT_DIR.$ds.'logs'.$ds.'php_error.log' );
1 feb. 2013 21:57:27
Comentarii

Deci ar trebui să dezactivez WP_DEBUG_LOG pentru a mă asigura că fișierul debug.log nu este niciodată creat în directorul wp-content?

jjeaton jjeaton
1 feb. 2013 21:59:01

Pui destul de multe întrebări pentru această oră :) Nu sunt în condiția mintală să răspund acum. Revino mâine și intră în chat.

kaiser kaiser
1 feb. 2013 22:47:02
0

Am avut această problemă. Ce am făcut a fost să adaug următoarele în wp-config:

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

Apoi am schimbat proprietarul pentru wordpress-debug.log:

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

Deci, în cazul meu a fost o problemă de permisiuni. Folosind chown pentru a seta permisiunile fișierului pentru utilizatorul/grupul WordPress am rezolvat problema.

7 iul. 2023 06:51:25