10/10/2018, 13:25
Giúp sửa lỗi session trong PHP
Em cấu hình cái php chạy trên iis của Win server 2k3. Test thử trên host free + localhost thì chạy tốt không thấy báo lỗi gì, nhưng khi đưa lên cái server mới này chạy iis thì nó lại báo lỗi session :
Mong các pro giúp....
Code:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:websitee-reportconfigconfig.php:1) in D:websitee-reportconfigconfig.php on line 2 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:websitee-reportconfigconfig.php:1) in D:websitee-reportconfigconfig.php on line 2
Bài liên quan
[=========> Bổ sung bài viết <=========]
Lý do: hàm session_start() và header() chỉ được thực hiện khi trước đó không có 1 byte dữ liệu nào được sent đế trình duyệt.
Câu báo lỗi trên cho biết có 1 byte dữ liệu nào đó ở dòng 2 của file in D:\website\e-report\config\config.php on line 2
)
cách khắc phục:
- thủ công: dò đến dòng co byte được sent in D:\website\e-report\config\config.php on line 2
và bỏ hết các phần dữ liệu được sent
- dùng ob_clean() trước session_start() hoặc header() để xóa hết các ký tự đã sent
chú ý: file php như sau sẽ bị lỗi khi dùng session_start() hoặc header()
ý do: có 1 ký tự \n (enter) nằm ngoài cặp <?php .. ?>
Khuyên dùng Macromedia Dreamweaver
vì đã test thử trên localhost + host free là ok mà.
Cấu hình cái php+mysql chạy trên nền iis của win server 2k3 thì nó xuất hiện ký tự này
help ..........
session_start(); phải đặt ở dòng đầu tiên của page. Cái lỗi hiện ra chỉ là warning thôi, bạn vào file php.ini cho display_error = 0 là xong.
Bạn chỉ cần tìm file nào có ký tự đó ở đầu thì xóa nó đi là lại chay được thôi. An toàn hơn nữa thì thêm ob_start(); ở đầu file gốc (vd: index.php hoặc header.php...) và ob_end_flush(); ở cuối file (vd: cuối index.php, footer.php) để xóa các ký tự trắng (có thể có) gây ra lỗi đầu tiên của bạn.
Hóa ra là copy paste lại là được.