WP_DEBUG_LOG의 로그 파일 위치를 변경할 수 있습니까?


18

개발 환경에서 WP_DEBUG_LOG를 사용하고 wp-content 디렉토리에있는 debug.log에 문제가 없습니다.

때로는 무언가를 디버깅해야 할 때 프로덕션에서 WP_DEBUG를 켜고 여전히 로그를 사용하고 싶지만 웹 루트 외부의 무언가로 리디렉션하고 싶습니다. WP_DEBUG_LOG를 사용하여 가능합니까?

답변:


19

모든 WP_DEBUG_LOG는 다음과 같습니다.

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

따라서 플러그인 또는 테마에서 WP_DEBUG_LOG의 로그 위치를 변경하려면 webaware의 답변 이 가장 좋습니다. 당신은 그냥 갖고 싶어 내에서 변경 wp-config.php이 대체 할 수있는 define( 'WP_DEBUG_LOG', true );위의 두 라인 당신이 원하는 목적지까지 로그 파일을 변경합니다.


몇 년 후 워드 프레스 컨텐츠 폴더에 없으면 파일을 오류로 채울 수 없습니다.
Mike Kormendy

@MikeKormendy-디렉토리 권한 문제 일 수 있습니다. 파일을 작성하려는 위치는 php 러너의 프로세스 소유자 인 사용자가 쓸 수 있어야합니다. 간단히 말해서, 새 파일 대상에 현재 wp-content 폴더와 동일한 권한이 있는지 확인하십시오.
Michael Teter


4

예, 플러그인이나 테마의 functions.php에 코드를 추가하면 다음과 같습니다.

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

편집 : 다른 사람이 나 에게이 작업을 수행 할 필요성을 제시 했으므로 편집 할 수있는 간단한 플러그인에 코드를 추가했습니다. 원하는 경우 요점으로 사용할 수 있습니다 .


이것을 wp-config.php 파일에 추가하려고 시도했지만 작동하지 않습니다. wp-config.php가 WP_DEBUG_LOG를 사용하여 로그 파일을 정의하는 코드의 실제 위치보다 먼저로드 되었기 때문입니까?
jjeaton

1
mu-plugin에 추가 하여이 작업을 수행 할 수있었습니다. 어쨌든 wp-config 내 에서이 변경을 수행 할 수 있습니까? WP_DEBUG_LOG를 false로 설정하고 자신이하는 일을 바꾸어야한다고 가정합니다.
jjeaton

1
플러그인이나 테마에 코드를 넣을 수 있다면 잘 작동합니다. 감사합니다!
jjeaton

예, 간단한 플러그인으로 덤프하십시오. 코덱에 플러그인 작성을 참조하십시오 .
webaware 2013

1

이 질문에 대한 마지막 답변이 게시 된 후 워드 프레스 코드가 변경된 것 같습니다. 이러한 상수와 관련된 현재 wp_debug_mode () 함수에는 WP_DEBUG_LOG가 true 또는 1과 같은지 여부에 대한 테스트가 포함되어 있습니다.이 경우 다른 사람들이 설명한대로 동작합니다.

그러나 해당 상수를 원하는 파일 경로 인 문자열로 설정하면 로그가 출력됩니다. 예를 들어 공개적으로 액세스 가능한 웹 컨텐츠를 위해 디렉토리 외부의 경로로 설정할 수 있습니다. 작동하려면 파일 권한으로 재생해야 할 수도 있습니다.

WordFence 보안 플러그인이 / 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

Afaik, 기본 디버그 파일의 위치를 ​​변경할 수 없습니다. 변경할 수있는 것은 MU 오류 로그의 위치와 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' );

따라서 내 wp-content 디렉토리에 debug.log 파일이 작성되지 않도록 WP_DEBUG_LOG를 해제해야합니까?
jjeaton

1
당신은이 요일과 시간에 대해 꽤 많은 질문을하고 있습니다 :) 나는 지금 그 사람들에게 대답 할 두뇌 상태가 아닙니다. 내일 다시 와서 채팅에 뛰어 들어
카이저

0

시간이 바뀌므로 기술적 인 질문에 대한 정답도 있습니다.

2019 년 말 현재 답변은 간단합니다. wp-config.php에서 WP_DEBUG_LOG "constant"를 정의 할 때 파일을 작성할 경로를 제공 할 수 있습니다.

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

Wordpress 지원 설명서 참조

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.