Xử lý lỗi ‘headers already sent by...’


Chào bạn !
Lỗi “…headers already sent by…“  xuất hiện khi:
+ Trước khi gọi hàm header bạn đã echo một nội dung gì đó hoặc một khoảng trắng.
+ Hoặc là trước hàm  header đã có lệnh nào đó bị warning (tức là dòng code nào đó trước dòng header bị lỗi)
Để khắc phục được lỗi này, trước hết bạn kiểm tra lại code của file bị lỗi xem trước khi gọi hàmheader có echo (xuất) nội dung gì hay không?
Trường hợp 1: Nếu trước khi gọi hàm header, bạn không dùng lệnh echo
Trường hợp này có thể lỗi là do có lệnh nào trước đó đã bị warning. Cách khắc phục ở đây là bạn thêm kí tự @ vào trước dòng lệnh bị warning (để tắt warning đi).
Trường hợp 2: Nếu trước khi gọi hàm header, bạn đã dùng lệnh echo. Bạn có thể tham khảo các phương án sau:
+Phương án 1: Chuyển nội dung echo về sau nội dung hàm header.
+Phương án 2: Sử dụng lệnh ob_start() và ob_flush()
- Gọi hàm ob_start() ở đầu file, hàm ob_start() có tác dụng khởi động vùng đệm của server để chứa tạm thời nội dung  echo (xuất) vào đó.
- Gọi hàm ob_flush() ở cuối file, hàm ob_flush() dùng để đưa dữ liệu từ vùng đệm của server về lại phần nội dung.
+Phương án 3: Nếu bạn có quyền thiết lập file php.ini của server
Thiết lập lại thuộc tính output_buffering= ON trong file php.ini
Thân chào!