Este posibil să schimbi locația fișierului de log pentru WP_DEBUG_LOG?
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?
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' );

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.

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.

@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.

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

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.

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?

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?

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

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

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;
}

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' );

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?

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.
