ปัญหา header already sent ธรรมดา ที่ไม่ธรรมดา

ปัญหา header already sent ธรรมดา ที่ไม่ธรรมดา

เหมือนเป็น error ธรรมดาที่แก้ได้ไม่ยาก แต่ไหง มันต้องมีเหตุ ที่ทำให้ช่วยกันงมอยู่ตั้งนาน หลายหัวมาช่วยกว่าจะแก้ได้

วันนี้อยู่ดีๆได้รับแจ้งจากลูกค้าว่าเว็บเค้าเกิด error

Cannot send session cache limiter - headers already sent Error ฯลฯ

ซึ่งมองป้าบเดียว รู้เลย ปัญหานี้เกิดจากมีตัวอักษร หรือข้อความ error ปรากฏก่อนการเปิด session_start() แน่นอน (ใครๆก็รู้กันทั้งนั้น) เพราะว่าเพื่อนผมเองก็พึ่งเอาไฟล์ไปแก้แล้วพึ่งเป็นด้วย เพราะว่าก่อนหน้านี้ไม่เป็น

แต่ผมก็เลยโหลดมาเพื่อจะแก้ เปิดมาดูก็สังเกตเห็นว่าก่อนเปิด session_start(); ไม่มีตัวหนังสือ หรือข้อความ error อะไรปรากฏอย่างแน่นอนที่สุด ที่มั่นใจก็เพราะว่าเป็น php file เดียว แล้ว session_start() ก็อยู่บรรทัดที่สอง โดยที่บรรทัดแรกคือ <?php เท่านั้น

ลองลบทั้งสองบรรทัดแล้วพิมพ์ใหม่อย่างตั้งใจก็ยังไม่หาย เกิดอาการงง

ทำให้ต้องไล่ต่ออีกไกลเลย ไม่ว่าจะเป็นค่า config ของ php ทั้งส่วนของ auto load หรือว่า auto start session แต่ก็ไม่ปรากฏว่ามีส่วนไหนตั้งค่าผิดจากปกติ

แต่มันก็ยัง error .... งง จนต้องเรียกหลายคนมาดู ก็ พางงกันไป เพราะว่ามันไม่หาย

สุดท้ายได้เพื่อนที่เป็นมือ hack (เป็นคนดีนะ) ก็นึกขึ้นได้บอกว่า อ๋อออ ลอง copy ไปสร้างหน้าใหม่แล้ววางดูดิ ได้เลย

ผมก็ลอง ปรากฏได้จริงๆ

งงกันทั้งวง

มันต้องมีเบื้องหน้าเบื้องหลัง มันก็เล่าให้ฟังต่อว่าไฟล์พวกนี้ มันเป็นไฟล์ที่มีอักขระพิเศษซ่อนอยู่ ซึ่งมองไม่เห็นด้วยตาเปล่า หรือ text editor ใดๆ ดังนั้นไม่ว่าจะลบหรือทำยังไง มันก็เลยไม่หายสักที แล้วมันก็แน่นอน ว่าอยู่จุดเริ่มต้นของไฟล์นั่นล่ะทำให้เห็น error Cannot send session cache limiter - headers already sent Error

ก็เลยแนะนำมาว่า ถ้าอยากเห็น เปิดด้วย hex editor ดู ว่าแล้วก็ต้องควานหาจนเจอครับ hex editor แล้วก็เจอจริงๆเป็นอักขระพิเศษ 3 ตัวที่ซ่อนอยู่ก่อนเปิด <?php ซึ่งมองด้วยตาเปล่าก็ไม่เห็น ลบก็ไม่ออก

และเพื่อนยังแนะนำต่ออีกว่าถ้าต้องการลบ ต้องเปลี่ยนให้มันเป็นอักษรที่มองเห็นก่อน เช่น 20ก็ได้ (ทำใน hex editor นะ)ซึ่งมันก็คือ space bar นั่นเอง แล้ว save แล้วค่อยเอา text editor ทั่วไปเปิดขึ้นมาแก้อีกทีมันก็จะเป็นตัวอักษรที่มองเห็นได้แล้ว

เป็นเรื่อง Cannot send session cache limiter - headers already sent Error ธรรมดา ที่ไม่ ธรรมดาจริงๆ

[PRINT VERSION] เขียน: 2010-04-15 21:56:07 แก้ไข : 2010-04-15 21:56:07 อ่าน : 1609
tag :

Comment

Comment
BeYourCyber - 14/04/2010 23:00:00 -
ร่วมพูดคุยในหัวข้อของบทความ ปัญหา header already sent ธรรมดา ที่ไม่ธรรมดา
เหมือนเป็น error ธรรมดาที่แก้ได้ไม่ยาก แต่ไหง มันต้องมีเหตุ ที่ทำให้ช่วยกันงมอยู่ตั้งนาน หลายหัวมาช่วยกว่าจะแก้ได้
non - 19/01/2011 20:04:23 - 223.204.116.11
ป่านนี้แก้ไ้แล้วมัง วิธีแก้คือทำ UTF-8 without BOM ครับ เพราะ BOM นี่ล่ะมันเป็นตัวเอาอักขระไปจองไว้ต้นไฟล์ ซึ่ง text editor มองกันไม่เห็น ฉะนั้นปัญหานี้จะหายไป ถ้าแปลงไฟล์แล้ว without BOM -- notepad++ ก็ีมีคำสั่งนี้ให้ใช้ ผมเลยไม่ต้องไปแก้ hex อะมัง ๕๕
Guest - 10/08/2011 23:04:52 - 58.10.235.223
ลองแล้ว work มากครับ ขอบคุณมาก
http://www.property2home.com