Cannot modify header information headers already sent by hướng dẫn năm 2024
Có khi nào bạn gặp lỗi “Cannot modify header information – headers already sent by (output started at C:\wamp\www\gau_bong25\gio_hang\them_sm.php:39) in C:\wamp\www\gau_bong25\gio_hang\them_sm.php on line 40” chưa? Show Trong php đây là một lỗi rất thường xuyên gặp. Có hai nguyên nhân chính gây ra lỗi này đó là: + 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) 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 Trong wordpress khi bạn làm theme thì lỗi này cũng hay xảy ra, và nó xảy ra thường là ở file functions.php. Khi nhìn vô dòng báo lỗi đó ta biết được gì? các bạn chú đường dẫn trong dấu ngoặc (“them_sm.php:39“), có nghĩa là lỗi này được phát sinh ở file them_sm.php và ở dòng 39, bạn vào file này và tìm những khoảng trắng, xuỗng hàng ở ngoài dấu ngoặc php ““. Trong vòng php thì không sao, những nếu các khoảng trắng, hoặc chữ hoặc bất cừ điều gì miễn sao có cái gì đó có dữ liệu trong html trong fiel đó. Tác giả: Dương Nguyễn Phú Cường Ngày đăng: Hồi xưa đó Lỗi hiển thịWarning: Cannot modify header information - headers already sent by (output started at C:\xampp74\htdocs\web02\examples\login.php:8) in C:\xampp74\htdocs\web02\examples\login.php on line 21 Nguyên nhân là trong lập trình web, chúng ta không thể thay đổi lại Response Header (khi header đã được gởi trả về cho Client). Theo lưu đồ trong hình, chúng ta có 3 đoạn code:
Do theo thứ tự viết code Ví dụ đoạn code lỗi:
Cách khắc phụcCó 2 cách để khác phục lỗi này Cách 1: Bổ sung hàm Output BufferingBạn phải đảm bảo rằng, các các liên quan đến Response Header phải được thao tác trước khi trả về cho Client. Vì vậy tốt nhất là đưa vào bộ nhớ đệm trước khi trả về cho người dùng. Code fix:- Dòng code yêu cầu Output Buffering // Cấu hình để PHP hiện tất cả Lỗi (ERROR) và Cảnh báo (WARNING) // Chỉ nên sử dụng khi đang phát triển ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); ?> Đã bổ sung phần viết code, hết lỗi ✌- Dòng code yêu cầu in ra tất cả và trả về reponse cho người dùng (Client) ?>Cách 2: Thay đổi cấu hình của PHPStep 1: Hiệu chỉnh file cấu hình của PHP
Step 2: Khởi động lại tiến trình Apache của XAMPPDone!Bonus liên quan đến Headerheader() không hoạt động header() hoạt động`
1
3
4
5`
3
8
4 |