สำหรับสภาพแวดล้อม 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