เป็นไปได้ไหมที่จะเปลี่ยนตำแหน่งไฟล์บันทึกสำหรับ WP_DEBUG_LOG?


18

ฉันใช้ WP_DEBUG_LOG ในสภาพแวดล้อมการพัฒนาของฉันและไม่มีปัญหากับ debug.log ที่อยู่ในไดเรกทอรี wp-content

บางครั้งฉันเปิด 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 );ด้วย 2 บรรทัดข้างต้นและเปลี่ยนไฟล์บันทึกเป็นทุกที่ที่คุณต้องการ


สองสามปีต่อมาและฉันไม่สามารถรับไฟล์เพื่อเติมด้วยข้อผิดพลาดได้เว้นแต่จะอยู่ในโฟลเดอร์เนื้อหาของ wordpress
Mike Kormendy

@ MikeKormendy - อาจเป็นปัญหาสิทธิ์ของไดเรกทอรี ตำแหน่งที่คุณต้องการเขียนไฟล์จะต้องสามารถเขียนได้โดยผู้ใช้ที่เป็นเจ้าของกระบวนการสำหรับ php runner กล่าวอย่างง่าย ๆ ให้แน่ใจว่าปลายทางไฟล์ใหม่นั้นมีสิทธิ์เท่ากับโฟลเดอร์ wp-content ปัจจุบัน
Michael Teter

5

ดูเหมือนว่าคำตอบในที่นี่ไม่เป็นความจริงอีกต่อไปสำหรับ WP รุ่น 5.1 ขึ้นไปนับตั้งแต่การเปลี่ยนแปลงนี้https://make.wordpress.org/core/2019/01/23/miscellaneous-developer-focused-changes-in-5-1 /

ตอนนี้คุณสามารถกำหนดWP_DEBUG_LOGเป็นพา ธ ถ้าคุณต้องการแทนที่ค่าดีฟอลต์wp-content/debug.logตัวอย่างเช่น:

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

4

ใช่ถ้าคุณเพิ่มรหัสลงในปลั๊กอินหรือฟังก์ชั่นของ theme.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 เป็นเท็จและแทนที่สิ่งที่มันทำเอง?
jjeaton

1
มันใช้งานได้ดีถ้าคุณสามารถใส่รหัสในปลั๊กอินหรือธีมขอบคุณ!
jjeaton

ใช่เพียงทิ้งลงในปลั๊กอินอย่างง่าย ดูที่การเขียนปลั๊กอินบน codex
webaware

1

ดูเหมือนว่ารหัส WordPress มีการเปลี่ยนแปลงตั้งแต่คำตอบสุดท้ายสำหรับคำถามนี้ถูกโพสต์ ปัจจุบัน 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

ตอนนี้, คุณไม่สามารถเปลี่ยนตำแหน่งสำหรับไฟล์ดีบั๊กเริ่มต้นได้ สิ่งที่คุณสามารถเปลี่ยนได้คือที่ตั้งสำหรับบันทึกข้อผิดพลาด 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_DEBUG_LOG เพื่อให้แน่ใจว่าไม่เคยสร้างไฟล์ debug.log ในไดเรกทอรี wp-content ของฉัน
jjeaton

1
คุณกำลังถามคำถามสำหรับวันและเวลานี้ :) ฉันไม่ได้อยู่ในสภาพสมองที่จะตอบคำถามเหล่านี้ในตอนนี้ กลับมาพรุ่งนี้แล้วกระโดดคุยกัน
ไกเซอร์

0

การเปลี่ยนแปลงครั้งและทำคำตอบที่ถูกต้องสำหรับคำถามทางเทคนิค

คำตอบปัจจุบันของปลายปี 2562 นั้นง่ายมาก เมื่อกำหนด WP_DEBUG_LOG "constant" ใน wp-config.php ตอนนี้คุณสามารถระบุพา ธ ที่คุณต้องการให้ไฟล์ถูกเขียน

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

ดูเอกสารประกอบการสนับสนุน Wordpress

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.