Preg_replace ใช้มากกว่าไบต์ที่ php5.2 อนุญาตตามค่าเริ่มต้น ซึ่งก็คือขนาดของ pcre.backtrack_limit และ pcre.recursion_limit
นับตั้งแต่เปิดตัวโปรแกรมเวอร์ชันอย่างเป็นทางการของ Discuz! 6.0.0 ทุกคนต่างยุ่งอยู่กับการอัปเกรด แต่ปลั๊กอินบางตัวมีปัญหาต่ำกว่า 6.0 เช่น http://www.discuz.net/viewthread.php?tid=559133 สิ่งนี้ ปลั๊กอินของธนาคารใน php สำหรับปัญหาหน้าจอสีขาวหลังการติดตั้งในสภาพแวดล้อม 5.2.0 ขึ้นไป จากมุมมองของผู้ใช้ Discuz เราต้องช่วยเหลือผู้สร้างปลั๊กอินในการแก้ปัญหานี้ ให้
ฉันพูดถึงวิธีแก้ปัญหาของฉัน ฉันหวังว่าฉันจะสามารถให้คำแนะนำแก่คุณได้
ขั้นแรก: ปลั๊กอินนี้สามารถทำงานได้ตามปกติภายใต้เวอร์ชัน 5.5 แต่หน้าจอจะเป็นสีขาวภายใต้เวอร์ชัน 6.0
เพื่อที่จะเพิ่มความสามารถในการอ่านไฟล์แคชเทมเพลต Discuz!6.0 ได้เพิ่มการเยื้องของไฟล์แคช และได้แก้ไขบางส่วนของการประมวลผลเทมเพลตของ templates.func.php
นี่อาจเป็นเหตุผลหรือไม่ ตอนแรกฉันพบว่าปัญหาอยู่ที่นี่ เพราะหลังจากแทนที่โค้ดที่แก้ไขด้วยส่วนหนึ่งของโค้ด 5.5 มันก็ทำงานได้ตามปกติ แต่ฉันรู้สึกหดหู่ใจมากและหาสาเหตุไม่ได้
ขั้นตอนที่ 2: ฉันสงสัยว่ามันเป็น ปัญหาเกี่ยวกับรูปแบบการเขียนของเทมเพลต bank.htm ดังนั้นฉันจึงรู้สึกหดหู่ใจมากและเริ่มวิเคราะห์เทมเพลต พูดตามตรง การวิเคราะห์เทมเพลตเมื่อมันใหญ่เกินไปนั้นปวดหัวจริงๆ เห็นได้ชัดว่าไม่พบสาเหตุ สิ่งที่น่าหดหู่กว่านั้นคือ
ขั้นตอนที่สอง: จากนั้นฉันก็พบว่าหลังจากแยกเทมเพลตนี้แล้ว เทมเพลตนี้ก็ทำงานได้ตามปกติ ในตอนแรกฉันสงสัยว่าข้อผิดพลาดในการจับคู่ปกติเกิดขึ้นเมื่อปริมาณข้อมูลมีขนาดใหญ่หรือไม่ ดังนั้นฉันจึงไปที่ bugs.php net เริ่มค้นหา http://bugs.php.net/search.php?c ... ace&x=3&y=5 ฉันค้นหาและค้นหาที่นี่ และในที่สุดก็พบสถานที่นี้: http://bugs.php.net/bug .php?id=39405 และพบว่าเป็นปัญหากับการกำหนดค่า 5.2 หลังจากปรับ pcre.backtrack_limit และ pcre.recursion_limit ขนาดใหญ่ ปัญหาก็ได้รับการแก้ไข
เหตุผลที่ฉันเขียนสิ่งนี้โดยละเอียดคือการแบ่งปันความคิดของฉัน สำหรับการแก้ปัญหา :)