Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by Hatası Çözümü
İçindekiler
Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by hatası, genellikle PHP‘de session_start()
fonksiyonu çağrıldığında veya HTTP başlıkları gönderildiğinde meydana gelir, ancak bu işlemlerden önce sayfada bir çıktı gönderildiğinde ortaya çıkar. Bu hata, “headers already sent” hatası olarak da bilinir.
Bu hatanın nedenleri arasında şunlar bulunabilir:
- Boşluk, HTML, veya metin: PHP dosyasının en üstünde boşluk, HTML veya metin (echo, print, vb.) bulunması.
- UTF-8 BOM (Byte Order Mark): Bazı metin düzenleyiciler UTF-8 BOM karakterini otomatik olarak ekler ve bu da bu hataya neden olabilir.
- İlgili Dosya veya Kütüphanelerde Sorun: Eğer başka bir dosya veya kütüphane, headers göndermeden önce bir çıktı veriyorsa bu hata meydana gelebilir.
Bu hatayı çözmek için aşağıdaki adımları izleyebilirsiniz:
1. Dosya Başlangıcını Kontrol Etme
PHP dosyasının başlangıcında boşluk, HTML etiketleri veya herhangi bir çıktı olmadığından emin olun. Boş satırlar, boşluklar veya herhangi bir çıktı (echo, print, vb.) session_start()
fonksiyonundan önce yer almamalıdır.session_start()
fonksiyonu 1.satırda olmalıdır.
2. UTF-8 BOM Karakterini Kaldırma
Eğer metin düzenleyiciniz UTF-8 BOM karakterini otomatik olarak ekliyorsa, dosyayı farklı bir düzenleyici ile açıp bu karakteri kaldırın.
3. Başka Dosyaları Kontrol Etme
Başka dosyaların (include
veya require
ile dahil edilen dosyalar, kütüphaneler vb.) headers göndermeden önce bir çıktı verip vermediğini kontrol edin. Bu dosyalarda da aynı kurallar geçerlidir.
4. PHP Fonksiyonlarını Kullanma
header()
veya setcookie()
gibi fonksiyonları, sayfa çıktısı gönderilmeden önce çağırmak önemlidir. Bu fonksiyonlar, headers gönderildikten sonra çağrılırsa hata verebilir.
Yukarıdaki adımları takip ederek genellikle “Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by’ hatasını gidermek mümkündür. Ancak sorun hala devam ediyorsa, kodunuzu daha detaylı bir şekilde incelemeniz gerekebilir.
Domain transfer işlemlerinde İntermar garantisi ile alan adınızı güvenli şekilde transfer edin!