WP_DEBUG_LOG için günlük dosyasının konumunu değiştirmek mümkün müdür?


18

Geliştirme ortamımda WP_DEBUG_LOG kullanıyorum ve wug-content dizininde debug.log ile ilgili sorunum yok.

Bazen bir şeyi ayıklamak gerektiğinde üretimde WP_DEBUG'ı açarım ve yine de günlüğü kullanmak istiyorum, ancak web köküm dışındaki bir şeye yönlendirmek istiyorum. WP_DEBUG_LOG kullanarak bu mümkün müdür?

Yanıtlar:


19

Tüm WP_DEBUG_LOG'un yaptığı:

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

Bu nedenle, bir eklenti veya temada WP_DEBUG_LOG için günlük konumunu değiştirmek istiyorsanız, web yazılımının yanıtı en iyisidir. Sadece değiştirilmesini wp-config.phpistiyorsanız define( 'WP_DEBUG_LOG', true );yukarıdaki 2 satırla değiştirebilir ve günlük dosyasını istediğiniz yere değiştirebilirsiniz.


Birkaç yıl sonra ve wordpress içerik klasöründe olmadığı sürece dosyayı hatalarla doldurmak için alamıyorum.
Mike Kormendy

@MikeKormendy - bir dizin izinleri sorunu olabilir. Dosyayı yazmak istediğiniz konum, php koşucusu için işlem sahibi olan kullanıcı tarafından yazılabilir olmalıdır. Basit bir ifadeyle, yeni dosya hedefinin şu anda wp-content klasörüyle aynı izinlere sahip olduğundan emin olun.
Michael Teter


4

Evet, bir eklentiye veya temanın işlevlerine bir kod eklerseniz, şöyle: php:

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

Düzenleme: başkası bana bunu yapmak için ihtiyacını sundu, bu yüzden düzenleyebilecekleri basit bir eklentiye bazı kodlar düşürdüm; kimse isterse bir özü olarak kullanılabilir .


Bu benim wp-config.php dosyasına eklemeyi denedim ve çalışmıyor. Bunun nedeni, wp-config.php'nin günlük dosyasını tanımlamak için WP_DEBUG_LOG kodunun kullanıldığı gerçek yerden daha önce yüklenmiş olması mıdır?
jjeaton

1
Bunu bir mu-eklentiye ekleyerek çalışmayı başardım. Sadece wp-config içinde bu değişikliği yapmak benim için var mı? Ben sadece WP_DEBUG_LOG yanlış olarak ayarlamak ve kendim ne değiştirmek zorunda olacağını varsayıyorum?
jjeaton

1
Eğer bir eklenti veya tema koyabilirsiniz eğer bu iyi çalışıyor, teşekkürler!
jjeaton

Evet, basit bir eklentiye dökün. Bkz . Kodeks üzerinde eklenti yazma .
webaware

1

Görünüşe göre bu soruya son cevap gönderildikten sonra WordPress kodu değişti. Bu sabitlerle ilgili geçerli wp_debug_mode () işlevi, WP_DEBUG_LOG öğesinin true değerine veya 1'e eşit olup olmadığının sınamasını içerir; bu durumda, diğerleri açıkladığı gibi davranır.

Bununla birlikte, bu sabiti bir dizeye - tercih ettiğiniz dosya yoluna - da ayarlayabilirsiniz ve günlük orada çıkacaktır. Örneğin, herkesin erişebileceği web içeriği için dizinlerinizin dışındaki bir yola ayarlayabilirsiniz. Çalışması için dosya izinleriyle oynamanız gerekebilir.

Bu cevabı aramaya geldim çünkü WordFence güvenlik eklentisi hata ayıklama günlüğümü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; }


0

Afaik, varsayılan hata ayıklama dosyasının konumunu değiştiremezsiniz. Değiştirebileceğiniz şey MU hata günlüğünün konumu ve PHP hata günlüğü dosyasının konumudur.

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

Bu yüzden debug.log dosyasının wp-içerik dizinimde asla oluşturulmadığından emin olmak için WP_DEBUG_LOG'u kapatmam gerekir mi?
jjeaton

1
Bu gün ve saat için oldukça fazla soru soruyorsun :) Şimdi bunları cevaplamak için beyin durumunda değilim. Yarın geri dön ve sohbete atla.
kaiser

0

Zaman değişiyor ve teknik soruların doğru cevapları da değişiyor.

2019'un sonlarından itibaren mevcut cevap basit. Wp-config.php dosyasındaki WP_DEBUG_LOG "sabiti" tanımlarken, artık dosyanın yazılmasını istediğiniz bir yol sağlayabilirsiniz.

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

Bkz. Wordpress Destek Belgeleri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.