WP_DEBUG ไม่ได้ถูกตั้งค่า แต่ฉันยังคงได้รับคำเตือน


14

หาก WP_DEBUG ไม่ได้ตั้งค่าตามที่ฉันเข้าใจคุณไม่ควรเห็นคำเตือน แต่ในบางไซต์บนเซิร์ฟเวอร์บางตัวฉันยังเห็นบางอย่าง ไม่ใช่คำเตือนทั้งหมดที่จะปรากฏขึ้นหาก WP_DEBUG ถูกตั้งค่าไว้ แต่เป็นเพียงบางส่วนเท่านั้น

ฉันได้ลองเปลี่ยนระดับข้อผิดพลาดใน php.ini แต่ดูเหมือนว่าจะไม่มีผลต่อการเตือนปรากฏหรือไม่ แต่พวกเขาจะปรากฏในจำนวนที่แตกต่างกันในเซิร์ฟเวอร์ที่แตกต่างกัน (เช่นไม่มีคำเตือนในการพัฒนาหนึ่งคำเตือนเกี่ยวกับการแสดงละครและ อีกสองสามคำเตือนเกี่ยวกับการผลิต)


คำเตือนเหล่านี้หรือข้อผิดพลาดร้ายแรงหรือไม่
TheDeadMedic

ฉันมีปัญหาเดียวกันที่แน่นอนมันเป็นคำเตือนจาก GravityForms ในกรณีของฉันเอาต์พุตแจ้งเตือนคือ - คำเตือน: สวิตช์ "กำหนดเป้าหมายต่อไป" นั้นเทียบเท่ากับ "หยุด" คุณหมายถึงใช้ "Continue 2" หรือไม่? ใน /plugins/gravityforms/common.php - คำตอบของ Logic Digger ด้านล่างนี้ทำงานคัดลอก / วางสำหรับฉันที่จะแก้ไขนี้ลองครั้งแรกขอบคุณ
OG ฌอน

คำตอบ:


8

WP_DEBUG ไม่มีผลกับเอาต์พุตข้อผิดพลาด PHP นอกจากการตั้งค่า error_reporting ให้ตั้งค่า display_errors = 0 ในไฟล์ php.ini ของคุณ มันเปิดใช้งานโดยค่าเริ่มต้นสำหรับการพัฒนา แต่คุณจะต้องการมันบนเซิร์ฟเวอร์ที่ใช้งานจริง


ในการถอดความ wp-include / load.php: if (WP_DEBUG) error_reporting (E_ALL) แต่ดูเหมือนว่าปลั๊กอินหลายตัวเล่นซอกับ error_reporting และ display_errors เมื่อพวกเขาไม่ควรจะเป็น
tomdxw

1
อ่า - ถูกต้อง display_errors ถูกตั้งเป็นเปิดใน php.ini ของฉัน ฉันแค่คิดว่า WP_DEBUG ดูแลข้อผิดพลาดทั้งหมด ขอบคุณ.
tomdxw

22

แทนที่

define('WP_DEBUG', false);

ด้วยสิ่งนี้:

ini_set('log_errors','On');

ini_set('display_errors','Off');

ini_set('error_reporting', E_ALL );

define('WP_DEBUG', false);

define('WP_DEBUG_LOG', true);

define('WP_DEBUG_DISPLAY', false);

4
โปรดเพิ่มคำอธิบายให้กับคำตอบของคุณ
fuxia

ข้อผิดพลาดที่อาจเกิดขึ้นบนหน้าจอปิดอยู่ แต่คุณสามารถเห็นพวกเขาในเซิร์ฟเวอร์ของคุณในบันทึกข้อผิดพลาด
user2060451

4

เป็นไปได้ว่าบรรทัดนี้ตั้งค่าเป็นเท็จแล้ว ในกรณีนั้นคุณจะเห็นรหัสต่อไปนี้:

define('WP_DEBUG', false);

ไม่ว่าในกรณีใดคุณจะต้องแทนที่บรรทัดนี้ด้วยรหัสต่อไปนี้:

ini_set('display_errors','Off');
ini_set('error_reporting', E_ALL );
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);

อย่าลืมบันทึกการเปลี่ยนแปลงและอัปโหลดไฟล์ wp-config.php ของคุณกลับไปที่เซิร์ฟเวอร์


1
ขอบคุณนี้ทำงานเพื่อซ่อนคำเตือนในส่วนหน้าสำหรับฉัน WP_DEBUG ถูกตั้งค่าเป็นเท็จแล้ว
OG ฌอน

1

ลองปิดการใช้งาน / ระงับคำเตือนข้อผิดพลาด / ประกาศทั้งหมดในของคุณwp-config.php(ด้านบน) อย่างไรก็ตาม: ข้อผิดพลาดไม่มีอะไรเลวร้าย พวกเขาให้โอกาสคุณแก้ไขรหัสของคุณ


ฉันคิดว่ามันเป็นปลั๊กอินของคนอื่นที่เล่นซอกับ error_reporting ที่ทำให้เกิดปัญหานี้
tomdxw

1

สำหรับสภาพแวดล้อม WordPress มักจะไม่มีเหตุผลที่จะใช้ini_setเพราะนั่นคือสิ่งที่ค่าคงที่กำหนดไว้โดย WordPress Core ได้รับอยู่แล้ว วิธีการที่ PHP ทำงานคือการตั้งค่าบางอย่างสามารถแทนที่ภายใน CMS ของคุณ (WordPress) ภายในสคริปต์ของแต่ละบุคคลและแม้กระทั่งบนพื้นฐานต่อผู้ใช้หรือต่อไดเรกทอรี (มากความยุ่งยากในการโฮสต์เว็บและหน่วยงาน)

หากต้องการปิดใช้งานข้อผิดพลาดไม่ให้แสดงบนหน้าใน WordPress การตั้งค่าเดียวที่คุณต้องการคือ:

define('WP_DEBUG', false);

... เนื่องจากเมื่อWP_DEBUGปิดใช้งานตัวเลือกย่อยจะไม่ทำงาน:

define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);

โปรดทราบว่าWP_DEBUG_LOGตัวเลือกที่สับสนนั้นหมายถึงการสร้างdebug.logภายในไดเรกทอรีเท่านั้นwp-contentและจะไม่มีผลกับการตั้งค่าการบันทึกอื่น ๆ เป็นต้น

อีกครั้งการตั้งค่าใน WordPress สามารถแทนที่การตั้งค่า PHP เริ่มต้นดังนั้นการตั้งค่า PHP ของคุณไม่สำคัญเท่ากับการตั้งค่าที่ถูกต้องในwp-config.phpไฟล์ของคุณซึ่งโหลดก่อนส่วนประกอบ WP อื่น ๆ

ดังกล่าวเป็นความคิดที่ดีที่จะใช้การตั้งค่าเริ่มต้นเช่นด้านล่างในการผลิต:

error_reporting = E_ERROR | E_WARNING | E_PARSE
display_errors = Off
display_startup_errors = Off
log_errors = On
error_log = /var/www/logs/error.log
log_errors_max_len = 1024
ignore_repeated_errors = On
ignore_repeated_source = Off
report_memleaks = On
xmlrpc_errors = 0
html_errors = Off

สำหรับตัวอย่างที่สมบูรณ์อ้างถึงไฟล์ SlickStack php.ini ที่ปรับให้เหมาะกับ Nginx และ PHP-FPM

ในกรณีหนึ่งหลังจากชั่วโมงของการวิจัยเราตระหนักปลั๊กอิน (หรือรูปแบบ) คือการเอาชนะการตั้งค่าการจัดการข้อผิดพลาดต่างๆที่ตั้งไว้ก่อนหน้าในและphp.ini wp-config.phpวิธีเดียวในการป้องกันสิ่งนี้คือการลบปลั๊กอิน WordPress หรือธีมที่พยายาม "แฮ็ค" การตั้งค่า PHP ของคุณหรือบอกให้ลบเพราะเป็นวิธีปฏิบัติที่ไม่ดีมากสำหรับส่วนขยายที่จะเอาชนะตัวเลือกการแก้ไขข้อบกพร่องของ CMS

ใน SlickStack เราสร้างสคริปต์ Bash ที่ "ติดธง" ใด ๆini_setและerror_reportingบรรทัดจากไฟล์ PHP ใน/themes/และ/plugins/ไดเรกทอรีโดยไฮไลต์อินสแตนซ์ดังกล่าวโดยใช้ MU Plugin (สคริปต์ PHP) ที่แสดงรายการของ "แฮ็ก" ใน WP Admin Dashboard

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