Có thể thay đổi vị trí tệp nhật ký cho WP_DEBUG_LOG không?


18

Tôi sử dụng WP_DEBUG_LOG trong môi trường phát triển của mình và không gặp vấn đề gì với debug.log trong thư mục wp-content.

Đôi khi tôi bật WP_DEBUG trong sản xuất khi tôi cần gỡ lỗi một cái gì đó và tôi vẫn muốn sử dụng nhật ký nhưng muốn chuyển hướng nó đến một cái gì đó bên ngoài web root của tôi. Điều này có thể sử dụng WP_DEBUG_LOG không?

Câu trả lời:


18

Hóa ra tất cả WP_DEBUG_LOG làm là:

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

Vì vậy, nếu bạn muốn thay đổi vị trí nhật ký cho WP_DEBUG_LOG trong một plugin hoặc chủ đề, câu trả lời của webkn là tốt nhất. Nếu bạn chỉ muốn nó thay đổi trong wp-config.phpbạn có thể thay thế define( 'WP_DEBUG_LOG', true );bằng 2 dòng trên và thay đổi tệp nhật ký thành bất cứ nơi nào bạn muốn.


Vài năm sau, và tôi dường như không thể khiến tập tin bị lỗi trừ khi nó nằm trong thư mục nội dung wordpress.
Mike Kormendy


4

Có, nếu bạn thêm một số mã vào plugin hoặc hàm.php của một chủ đề như vậy:

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

Chỉnh sửa: một người khác chỉ cho tôi nhu cầu thực hiện việc này, vì vậy tôi đã bỏ một số mã vào một plugin đơn giản mà họ có thể chỉnh sửa; nó có sẵn như là một ý chính nếu bất cứ ai muốn nó.


Tôi đã thử thêm nó vào tập tin wp-config.php của tôi và nó không hoạt động. Có phải vì wp-config.php có thể được tải sớm hơn vị trí thực tế trong mã nơi WP_DEBUG_LOG được sử dụng để xác định tệp nhật ký?
jjeaton

1
Tôi đã có thể làm cho nó hoạt động bằng cách thêm nó vào một mu-plugin. Có cách nào để tôi thực hiện thay đổi này trong wp-config không? Tôi giả sử tôi chỉ cần đặt WP_DEBUG_LOG thành false và tự thay thế những gì nó làm?
jjeaton

1
Điều này hoạt động tốt nếu bạn có thể đặt mã trong một plugin hoặc chủ đề, cảm ơn!
jjeaton

Vâng, chỉ cần đổ nó vào một plugin đơn giản. Xem Viết plugin trên codex.
web biết

1

Có vẻ như mã WordPress đã thay đổi kể từ khi câu trả lời cuối cùng cho câu hỏi này được đăng. Hàm wp_debug_mode () hiện tại liên quan đến các hằng số đó bao gồm một bài kiểm tra xem WP_DEBUG_LOG có tương đương với true hay 1 - trong trường hợp này nó hoạt động như những người khác đã mô tả nó.

Tuy nhiên, bạn cũng có thể đặt hằng số đó thành một chuỗi - đường dẫn tệp ưa thích của bạn - và nhật ký sẽ được xuất ra ở đó. Ví dụ: bạn có thể đặt đường dẫn bên ngoài thư mục của mình cho nội dung web có thể truy cập công khai. Bạn có thể phải chơi với quyền truy cập tệp để làm việc đó.

Tôi đã tìm kiếm câu trả lời này vì plugin bảo mật WordFence đang phàn nàn về nhật ký gỡ lỗi của tôi có khả năng truy cập trong / 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, bạn không thể thay đổi vị trí cho tệp gỡ lỗi mặc định. Những gì bạn có thể thay đổi là vị trí cho nhật ký lỗi MU cũng như vị trí cho tệp nhật ký lỗi 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' );

Vì vậy, tôi sẽ cần phải tắt WP_DEBUG_LOG để đảm bảo rằng tệp debug.log không bao giờ được tạo trong thư mục nội dung wp của tôi?
jjeaton

1
Bạn đang hỏi khá nhiều câu hỏi cho ngày hôm nay :) Tôi không ở trong tình trạng não bộ để trả lời những câu hỏi đó. Trở lại vào ngày mai và nhảy vào trò chuyện.
kaiser
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.