[PHP] ปัญหา Cannot send session cache limiter headers already sent

เนื่องจากเวลาทำเว็บ PHP มักนิยม encoding ด้วย UTF-8 เสมอไม่เคยเจอปัญหา เพิ่งจะมาเจอก็ตอนเปลี่ยนมาใช้ Notepad++ ในการเขียน PHP แทน Adobe Dreamweaver เพราะไม่ค่อยได้ใช้ในการ Design แค่ Code อย่างเดียว ปัญหาที่เจอเคือการใช้งาน Session ดังนี้

<?php
session_start();
echo "Session Start...";
?>

ดูผ่านๆ ไม่น่ามีปัญหาอะไร แต่เจอ Errorแบบนี้

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at xxx) in xxx

ก็หน้ามืดไปเกือบ ชั่วโมงได้ สุดท้ายพบว่าเป็นที่ Notepad++ เนื่องจาก Default Encoding ผมกำหนดเป็น UTF-8 ดังรูป
php-utf8-encoding-problem
ตัว Notepad++ เพิ่มข้อความอะไรสักอย่างในไฟล์ ดังนี้ (เปิดจากไฟล์ปกติจะไม่เจอ ที่เจอเนื่องจากลองใช้ Java อ่านข้อมูลออกมา)

๏ปฟ<?php
session_start();
echo "Session Start...";
?>

ทำให้เกิด error ดังกล่าว วิธีแก้ไขให้ บันทึกรูปแบบ Encoding เป็น Encoding UTF-8 Without BOM ดังรูป
php-utf8-encoding-problem
หวังว่าคนที่เจอปัญหาเดียวกันจะได้แก้ไขได้ถูกทางครับ
เพิ่มเติม 08-02-2011 : เพื่อนที่ทำงานแนะนำว่าให้เพิ่ม ob_start(); ในบรรทัดแรกก็แก้ปัญหาได้เหมือนกัน

  1. เคยใช้เหมือนกันครับ ไอ้ Notepad++ เนี่ย Encode ได้ดังใจ แต่มันน่าจะเพิ่มลูกเล่นมากกว่านี้

    • LuciferUltraM
    • December 30th, 2010

    ผมใช้ @session_start(); ก้หายนะครับ

  2. @session_start(); หายเช่นกัน

    สำหรับคนที่เป็นแล้วไม่หาย ต้องไปตรวจดู Webserver ว่า Run ด้วยอะไร

    • art
    • October 18th, 2011

    ขอบคุณครับ ขอบคุณมากมากเลย

    • ปอ
    • January 10th, 2012

    ขอบพระคุณอย่างสูง

    • คนผ่านมา
    • January 10th, 2012

    @session_start(); แบบนี้เหมือนมันไม่สนใจ error หรือ warning ซึ่งไม่แนะนำให้ใช้เพราะอาจตรวจสอบหาข้อผิดพลาดได้ยากเมื่อเกิดปัญหาขึ้น

    • PP
    • June 27th, 2012

    Thankyou

    • ์โปรแกรมเมอร์มือใหม่
    • July 13th, 2012

    session_start(); มะเห็นหายเรย

    • sakchaina
    • July 11th, 2013

    ถ้าใส่ @ ข้างหน้าแล้วไม่หาย
    ให้เลือก Encode in UTF-8 หายแน่นอนครับ (ไม่มี Without ต่อท้ายนะครับ)รับรองหายแน่นอนครับ

    • tawee2534
    • September 10th, 2013

    ขอบคุณครับ encoding แล้วหายจริงๆ ด้วย

    • yajoon
    • March 31st, 2014

    ขอบคุณค่ะ หาตั้งนาน กดพลาดไปหน่อยเดียวเอง

    • tuttu34
    • April 5th, 2014

    LuciferUltraM >> ok ครับ

    • อรรถ
    • June 24th, 2016

    หาสาเหตุตั้งนาน มาเจอที่นี้จบเลยครับ file เป็น Encode in UTF-8 อยู่แล้วครับ แต่ก็ยัง Error เพิ่มคำนี้เข้าไปจบเลยครับ @ @session_start();

    • chi
    • September 13th, 2016

    ทำทุกอย่างไม่เห็นหายเลยซักอย่าง

    • chaivat
    • February 4th, 2017

    ขอบคุณมากๆ จริงๆ ครับ มืดเก้าด้านเลยทำไม่ได้ พอมาเจอกระทู้นี้ สุดยอดครับผม ทำได้แล้วครับ

  1. No trackbacks yet.