Remove BOM (Byte order mark)

From P&T Knowledgebase
Revision as of 02:49, 6 October 2012 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

โปรแกรม Editor บางตัว เวลาเราบันทึกไฟล์เป็น UTF-8 ตัวโปรแกรมจะแทรก BOM (Byte order mark) เอาไว้ที่ส่วนหัวของไฟล์ด้วย ทำให้มีปัญหากับโปรแกรม PHP พวกคำสั่ง header และ session_start เพราะว่าก่อนเรียก 2 คำสั่งนี้ จะต้องไม่มี output ที่ออกมาก่อนเลย ถ้ามี BOM มาแทรกที่ตอนแรก ก็จะทำให้เกิด Error ลักษณะนี้

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent 
(output started at /home/username/domains/username.com/public_html/index.php:1) in /home/username/domains/username.com/public_html/index.php on line 9

วิธีแก้ คือ ต้องลบ BOM ที่หัวไฟล์ออกครับ. แต่ถ้าใช้ Editor ทั่วๆ ไป บางทีจะมองไม่เห็นครับ วิธีที่ได้ผล 100% คือ ให้ใช้ File Manager ใน DirectAdmin มาแก้ครับ ซึ่งมีขั้นตอนดังนี้ครับ

  1. เปิด DirectAdmin เข้าที่เมนู File Manager
  2. คลิกเข้าไปตามโฟลเดอร์จนไปเจอไฟล์ที่คุณต้องการแก้ไข
  3. คลิกที่ Edit ตรงไฟล์ที่ต้องการแก้ไข
    2010-10-18_1732.png

  4. คุณจะเห็นว่ามีอักขระแปลกๆ แทรกอยู่ที่หัวไฟล์ (มันคือ BOM)
    2010-10-18_1735.png

    หมายเหตุ: ในกรณีที่ Encoding ของ Browser เป็น UTF-8 คุณจะมองไม่เห็นอักขระดังกล่าว แต่คุณสามารถลบมันออกได้เหมือนกัน โดยคลิกที่บรรทัดแรก แล้วกดคีย์ [Home] บนคีย์บอร์ด เพื่อเลื่อน Cursor ไปที่ด้านหน้าสุดของบรรทัด แล้วให้กดคีย์ [Del] บนคีย์บอร์ด เพื่อลบอักขระ BOM ออก

  5. ให้ลบออกอักขระดังกล่าวออกครับ
    2010-10-18_1737.png

  6. กดปุ่ม Save As ที่ด้านล่าง
    2010-10-18_1738.png