Khắc phục lỗi Warning: Cannot modify header information – headers already sent by

Cập nhật 11/09/2024

Lỗi Warning: Cannot modify header information – headers already sent by là một lỗi phổ biến trong PHP. Lỗi này xảy ra khi bạn cố gắng gửi header HTTP (chẳng hạn như header(), setcookie(), hoặc session_start()) sau khi đã có đầu ra (output) được gửi đến trình duyệt. Đầu ra này có thể bao gồm bất kỳ văn bản, khoảng trắng, hoặc mã HTML nào được xuất ra trước đó.

Trong bài viết này, BKNS sẽ giúp bạn tìm hiểu nguyên nhân và cách khắc phục lỗi Warning: Cannot modify header information – headers already sent by

Khắc phục lỗi Warning: Cannot modify header information - headers already sent by
Khắc phục lỗi Warning: Cannot modify header information – headers already sent by

Nguyên nhân thường gặp

1. Khoảng Trắng Ngoài PHP Tags:

    • Khoảng trắng hoặc ký tự mới (newline) sau thẻ đóng PHP ?> hoặc trước thẻ mở <?php.
    • Khoảng trắng trước <?php ở đầu file hoặc sau ?> ở cuối file.

2. Output trước lệnh header(): Bất kỳ echo, print, hoặc HTML nào được xuất ra trước khi gọi header().

3. Lỗi trong file include/require: Nếu file được include hoặc require đã có đầu ra, lỗi này cũng có thể xảy ra.

Cách khắc phục lỗi Warning: Cannot modify header information – headers already sent by

1. Kiểm tra khoảng trắng và ký tự thừa

Đảm bảo rằng không có khoảng trắng hoặc ký tự thừa trước thẻ mở <?php hoặc sau thẻ đóng ?>. Tốt nhất là không sử dụng thẻ đóng ?> trong file PHP để tránh lỗi này.

                                  <?php

                                  // Code

                                 // Không cần thẻ đóng PHP nếu file chỉ chứa mã PHP

2. Đảm bảo không có Output trước header

Đảm bảo rằng không có bất kỳ lệnh echo, print, hoặc mã HTML nào trước khi gọi header().

                                 <?php

                                 // Đảm bảo không có output trước header()

                                 header(‘Location: http://example.com‘);

                                 exit;  // Đảm bảo script dừng ngay sau khi gửi header

3. Kiểm tra file include/require

    • Kiểm tra các file được include hoặc require để đảm bảo rằng chúng không có bất kỳ đầu ra nào trước khi bạn gọi header().
    • Đảm bảo rằng các file include/require cũng không chứa khoảng trắng ngoài thẻ PHP.

4. Sử dụng Output Buffering

Một cách khắc phục tạm thời là sử dụng ob_start() để bật buffering đầu ra. Điều này sẽ giữ tất cả đầu ra trong bộ nhớ đệm trước khi gửi nó đến trình duyệt.

ob_start(); ( chèn vào đầu file php )  // khởi động vùng đệm của server để chứa tạm thời nội dung echo (xuất) vào đó.

ob_end_flush(); ( chèn vào cuối file php ) // đưa dữ liệu từ vùng đệm của server về lại phần nội dung.

Tuy nhiên, đây chỉ là giải pháp tạm thời. Bạn nên xác định và sửa lỗi từ nguồn gốc thay vì dựa vào buffering.

Tổng kết

Trên đây chính là nguyên nhân và cách khắc phục lỗi Warning: Cannot modify header information – headers already sent by, mong rằng bài viết này của BKNS đã giúp ích cho bạn. 

Đừng quên theo dõi  huongdan.bkns và BKNS để cập nhật những bài viết mới nhất của chúng tôi.

BÀI VIẾT LIÊN QUAN

Hướng Dẫn Dịch Vụ Hosting