É possível alterar o local do arquivo de log para WP_DEBUG_LOG?


18

Uso WP_DEBUG_LOG no meu ambiente de desenvolvimento e não tenho problemas com o debug.log no diretório wp-content.

Às vezes, ligo o WP_DEBUG na produção quando preciso depurar algo, e ainda quero usar o log, mas gostaria de redirecioná-lo para algo fora da minha raiz da web. Isso é possível usando WP_DEBUG_LOG?

Respostas:


19

Acontece que tudo o que WP_DEBUG_LOG faz é:

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

Portanto, se você deseja alterar o local do log para WP_DEBUG_LOG em um plug-in ou tema, a resposta do webaware é a melhor. Se você apenas deseja alterá- lo dentro de wp-config.phpvocê, pode substituir define( 'WP_DEBUG_LOG', true );pelas 2 linhas acima e alterar o arquivo de log para onde quiser.


Alguns anos depois, não consigo obter o arquivo preenchido com erros, a menos que esteja na pasta de conteúdo do wordpress.
precisa saber é o seguinte

@ MikeKormendy - pode ser um problema de permissão de diretório. O local em que você deseja gravar o arquivo deve ser gravável pelo usuário que é o proprietário do processo para o php runner. Em termos simples, verifique se o novo destino do arquivo tem as mesmas permissões que a pasta wp-content atualmente.
Michael Teter


4

Sim, se você adicionar algum código a um plugin ou a functions.php de um tema, é assim:

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

Editar: alguém acabou de me apresentar a necessidade de fazer isso, então eu coloquei algum código em um plugin simples que eles podem editar; está disponível como uma essência, se alguém quiser.


Eu tentei adicionar isso ao meu arquivo wp-config.php e ele não funciona. Isso ocorre porque o wp-config.php talvez seja carregado antes do local real no código em que WP_DEBUG_LOG é usado para definir o arquivo de log?
jjeaton

1
Consegui fazer isso funcionar adicionando-o a um mu-plugin. Existe alguma maneira para eu apenas fazer essa alteração no wp-config? Eu estou supondo que eu teria que definir WP_DEBUG_LOG como false e substituir o que ele faz?
jjeaton

1
Isso funciona bem se você pode colocar o código em um plugin ou tema, obrigado!
21133 jjeaton

Sim, basta despejá-lo em um plugin simples. Consulte Escrevendo um plugin no codex.
webaware 02/02

1

Parece que o código do WordPress mudou desde que a última resposta a esta pergunta foi publicada. A função atual wp_debug_mode () relacionada a essas constantes inclui um teste para determinar se WP_DEBUG_LOG é igual a true ou 1 - nesse caso, ele se comporta como outros a descreveram.

No entanto, você também pode definir essa constante como uma sequência - seu caminho de arquivo preferido - e o log será gerado lá. Por exemplo, você pode configurá-lo como um caminho fora dos diretórios para conteúdo da Web acessível ao público. Talvez você precise jogar com permissões de arquivo para que isso funcione.

Eu procurei esta resposta porque o plug-in de segurança do WordFence está reclamando sobre o meu log de depuração estar potencialmente acessível em / 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

No entanto, você não pode alterar a localização do arquivo de depuração padrão. O que você pode alterar é o local do log de erros do MU, bem como o local do arquivo de log de erros do 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' );

Portanto, eu precisaria desativar o WP_DEBUG_LOG para garantir que o arquivo debug.log nunca seja criado no meu diretório wp-content?
Jjeaton

1
Você está fazendo algumas perguntas para este dia e hora :) Não estou com a condição cerebral de responder agora. Volte amanhã e entre no bate-papo.
Kaiser #

0

Os tempos mudam e as respostas corretas para perguntas técnicas.

A resposta atual no final de 2019 é simples. Ao definir a "constante" WP_DEBUG_LOG no wp-config.php, agora você pode fornecer um caminho em que deseja que o arquivo seja gravado.

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

Consulte a documentação de suporte do Wordpress

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.