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 :
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
Mong các pro giúp....
hoangcn02 viết 15:32 ngày 10/10/2018
Kiểm tra thử trước cái hàm start session đó có echo cái gì ra không, hay có lòi cái khoảng trắng nào không
dinhgiapit viết 15:30 ngày 10/10/2018
bạn thử gửi đoạn code của file config.php xem sao.chứ bạn chỉ nói thế thì biết làm sao được

[=========> 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 .. ?>
ktakta viết 15:28 ngày 10/10/2018
Được gửi bởi dinhgiapit
bạn thử gửi đoạn code của file config.php xem sao.chứ bạn chỉ nói thế thì biết làm sao được

[=========> 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 .. ?>
Uh, editplus 2.0b của mình thấy dc ký tự BOM trước <?php
Khuyên dùng Macromedia Dreamweaver
vanlien129 viết 15:37 ngày 10/10/2018
Cám ơn các bạn đã góp ý. Mình sài Notpet++ lên những ký tự boom là không có.
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
Code:

và chẳng hiện gì nữa, mình dùng PHP 5.22 và mysql 5.5.9
help ..........
suutamcongnghe viết 15:29 ngày 10/10/2018
Ký tự đó xuất hiện là do bạn save file với Encode là utf-8 có: Add a Unicode Signature (BOM). Bạn save as file lại, bỏ cái BOM đi là ok.

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.
redhill viết 15:39 ngày 10/10/2018
Được gửi bởi vanlien129
Cám ơn các bạn đã góp ý. Mình sài Notpet++ lên những ký tự boom là không có.
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
Code:

và chẳng hiện gì nữa, mình dùng PHP 5.22 và mysql 5.5.9
help ..........
Ký tự đó thường chỉ xuất hiện nếu bạn sử dụng Notepad để chỉnh sửa code, mình từng dùng Notepad++ để viết code nhưng ko hề bị xuất hiện ký tự đó trong file đã save, bạn nên kiểm tra lại.

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.

Được gửi bởi suutamcongnghe
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.
Vậy sau nếu mình viết xong và đưa lên host người ta có cho vào php.ini để chỉnh ko? Nếu dùng ở localhost, mình khuyên ko nên tắt nó đi. Nên học cách code đúng ko lỗi hoặc có lỗi thì phải tìm cách khắc phục hơn là hoc cách che dấu lỗi đi
vanlien129 viết 15:34 ngày 10/10/2018
Ok, tks các bạn mình đã làm được rùi hihi.
Hóa ra là copy paste lại là được.
facebook viết 15:33 ngày 10/10/2018
nên file php toàn là code php thì bạn nên bỏ dấu ?> ở cuối đẻ tránh tình trạng tương tự
luong.minhson viết 15:40 ngày 10/10/2018
Được gửi bởi vanlien129
Cám ơn các bạn đã góp ý. Mình sài Notpet++ lên những ký tự boom là không có.
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
Code:

và chẳng hiện gì nữa, mình dùng PHP 5.22 và mysql 5.5.9
help ..........
Đúng là nên lưu ý cái này thiệt. Mình dùng Notepad ++ ko sai gì, mà mãi ko lấy được session, cuối cùng sau mấy ngày. gặp được topic này mình mới giải quyết xong vấn đề, thì ra khi mình lưu trong notepad ++ để utf8 thì nó sẽ mặc định thêm vào mấy cái kí tự lung tung, chỉ cần save lại bằng DW hay cpy paste lai ko để UTF8 nữa là mọi vấn đề chuẩn. Lưu ý cái này mới được..
Bài liên quan
0