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?
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 đó.
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?
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 đó.