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

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

วันนี้อยู่ดีๆได้รับแจ้งจากลูกค้าว่าเว็บเค้าเกิด 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 ธรรมดา ที่ไม่ ธรรมดาจริงๆ

Create: Modify : 2010-04-15 21:56:07 Read : 5201 URL :