क्या WP_DEBUG_LOG के लिए लॉग फ़ाइल स्थान बदलना संभव है?


18

मैं अपने विकास के वातावरण में WP_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 के लिए लॉग स्थान बदलना चाहते हैं, तो वेबवेयर का उत्तर सबसे अच्छा है। यदि आप बस इसे अपने भीतर बदलना चाहते हैं तो उपरोक्त 2 पंक्तियों के साथ wp-config.phpबदल सकते define( 'WP_DEBUG_LOG', true );हैं और लॉग फ़ाइल को जहाँ चाहें बदल सकते हैं।


कुछ साल बाद, और जब तक कि यह वर्डप्रेस कंटेंट फ़ोल्डर में न हो, मैं फ़ाइल को त्रुटियों से भरने के लिए नहीं देख सकता।
माइक कॉर्मेंडी

@MikeKormendy - यह एक निर्देशिका अनुमति समस्या हो सकती है। वह स्थान जहाँ आप फ़ाइल लिखना चाहते हैं, उस उपयोगकर्ता के लिए उपयुक्त होना चाहिए जो php धावक के लिए प्रक्रिया का स्वामी है। सरल शब्दों में, सुनिश्चित करें कि नई फ़ाइल गंतव्य में वही अनुमतियाँ हैं जो वर्तमान में wp-content फ़ोल्डर में हैं।
माइकल टेटर

5

ऐसा लगता है कि यहां उत्तर WP संस्करण 5.1 और इसके बाद के संस्करण के लिए अभी तक सही नहीं है, क्योंकि यह परिवर्तन https://make.wordpress.org/core/2019/01/23/misc विविध-developer-focused-changes-in- 5-1 /

अब आप WP_DEBUG_LOGएक पथ के रूप में परिभाषित कर सकते हैं यदि आप wp-content/debug.logउदाहरण के लिए डिफ़ॉल्ट को ओवरराइड करना चाहते हैं :

define( 'WP_DEBUG_LOG', 'wp-content/uploads/debug.log' );

4

हां, यदि आप किसी प्लगइन या थीम के फंक्शन्स में कुछ कोड जोड़ते हैं।

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
मैं इसे म्यू-प्लगइन में जोड़कर काम करने में सक्षम था। वैसे भी मेरे लिए सिर्फ wp-config में यह बदलाव करना है? मैं मान रहा हूँ कि मुझे बस गलत करने के लिए WP_DEBUG_LOG सेट करना होगा और इसे स्वयं प्रतिस्थापित करना होगा?
jjeaton

1
यह अच्छी तरह से काम करता है यदि आप एक प्लगइन या थीम में कोड डाल सकते हैं, धन्यवाद!
23

हां, बस इसे एक साधारण प्लगइन में डंप करें। कोडेक्स पर एक प्लगइन लिखना देखें ।
23

1

लगता है कि इस प्रश्न के अंतिम उत्तर के बाद से वर्डप्रेस कोड बदल गया है। उन स्थिरांक से संबंधित वर्तमान wp_debug_mode () फ़ंक्शन में WP_DEBUG_LOG के सत्य या 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, आप डिफ़ॉल्ट डीबग फ़ाइल के लिए स्थान नहीं बदल सकते। आप जो बदल सकते हैं वह एमयू त्रुटि लॉग के लिए स्थान है और साथ ही पीएचपी त्रुटि लॉग फ़ाइल के लिए स्थान है।

$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_DEBUG_LOG को बंद करना होगा ताकि यह सुनिश्चित हो सके कि मेरे wp-content निर्देशिका में debug.log फ़ाइल कभी नहीं बनी है?
19

1
आप इस दिन और समय के लिए काफी कुछ सवाल पूछ रहे हैं :) मैं अब जवाब देने के लिए मस्तिष्क की स्थिति में नहीं हूं। कल वापस आओ और चैट में कूदो।
कैसर

0

समय बदल जाता है, और इसलिए तकनीकी प्रश्नों के सही उत्तर देते हैं।

2019 के उत्तरार्ध में वर्तमान उत्तर सरल है। WP_DEBUG_LOG "स्थिर" को wp-config.php में परिभाषित करते हुए, अब आप एक पथ प्रदान कर सकते हैं जहाँ आप चाहते हैं कि फ़ाइल लिखी जाए।

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

देखें वर्डप्रेस सपोर्ट डॉक्यूमेंटेशन

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.