PHP ‘Cannot send session cache limiter – headers already sent’ hatası
Bu hata genelde php’de oturum yönetimi ile alakalı işler yaparken çıkar.. Daha önce bir çok kez karşılaştım ve geleneksel yöntemle çözdüm fakat bugünkü farklıydı.Bu hatanın geleneksel çözüm yöntemi;
<? ob_start();
session_start(); ?>
kodlarını sayfanın en en üstüne almak. Fakat bugün bu şekilde çözemedim. Notepad++ kullanıyorum ve tüm kodları UTF8 formatında yazıyorum.. Benim bu hatayı almamın sebebi kodları yazarken UTF-8 kodlamasını kullanmammış.. Bunu farketmem uzun sürdü. Çözümleri denerken, bir de şu dosyanın karakter kodlamasını ANSI yapayım dedim ve sorun çözüldü… Yani iki çözüm var;
- ob_start ve session_start kodlarını sayfalarınızın ilk satırına almak
- kodlarınızı yazarken kullandığınız dosyanın karakter kodlamasını ANSI yapmak…
Neden UTF-8 ile yazamıyoruz bilmiyorum.. Benim sorun o şekilde çözüldü ama utf8 ile de yazılmalı.. Eğer yeni bir bilgi bulursam yazarım veya bilen varsa lütfen paylaşsın..



ansi işaretleyip bom olabilir.
yada utf8 işaretliyip bom olabilir ikisi biraz değişiyor.
ama en sağlıklı yontem..
crtl+a ctrl+x kodlama türü kafanıza göre
sonra crtl+s ve ctrl+v
tekrar ctrl+s yapın ve deneyin bakalım olacakmı.
%90 olması lazım eğer kodlama kaynaklı bazen olmuyor ama deneyerek bu şekilde çözülebilir.
Teşekkürler yorumunuz için.. Artık ben notepad++’ta UTF-8 without BIN’i kullanıyorum ve bir problemle karşılaşmıyorum.. Herkese de bunu öneririm :)
tsklerr
Birde ben buldum :) eğer ki bir dosya içerisine başka sayfaları include yöntemi ile çağırıyorsanız ve o başka sayfalar içerisinde session işlemi yapıyorsanız o bir dosyanın başına yazınız o kodları :) aksi taktirde hata alacaksınız. Makale için ayrıca teşekkür ederim.
Saygılarımla
Emin ÖZTÜRK
@Emin teşekkürler. Anlattığın olay hatanın oluşma sebebi.
tskler
Aynı hatayı ben Zend Framework ile çalışırken aldım. Bende kodlamayı Notepad++ ile yapıyorum. MVC de eğer ANSI ile yazarsam problem olmuyor and UTF-8 ile yazınca problem oluyordu. Yaklaşık bir hafta uğraştım sorun nedir diye. CSS den tutun tüm dosyaları tek tek gezdim. Sorunu aşamadım. En sonunda UTF-8 without BOM ile sorunu aştım. Zaten UTF ile kodladığınızda sayfanın kaynak kodlarına bakarsanız, sayfanın en üst tarafında ufak bir kare göreceksiniz.
Kolay gele
ben de aynı sorunu alıyordum. ilginçtir burda yazıldığı gibi session_start kodunu en üste aldım sorun çözüldü. bu defa da session yönlerin birinde çalışmaz oldu. yani her yerde çalışiyor ama linklerin birinde çalışmıyor.üye girişi yaptığınızda bütün bağlantılar sorunsuz çalışırken hesabım a tıkladığınızda sorun veriyor.
@fikret e-posta ile bana sorunun başka bir problemden kaynaklandığını söyledi.
Bazen php.ini’deki output_buffering değişkenini Off’dan On’a çevirerek de bu sorun düzelebiliyor. İlginç.
@Furkan bu çözüm de güzelmiş, teşekkürler.
Arkadaşlarım birde tavsiyem şu olur; eğer ki sayfalar içerisinde include yöntemi kullanıyorsanız, genel kullanım olan değil de şu şekilde kullanmanızı tavsiye ederim:
** PHP TAG **
include_once ‘dosyaadi.php’;
** PHP TAG **
burdada fonksiyon çakışmaları hatasını engellemiş olursunuz.
Saygılarımla
Emin ÖZTÜRK
Arkadaşlar hepinize çok teşekkür ederim. Kaç gündür bununla uğraşıyordum, denemediğim şey araştırmadığım yer kalmadı ve bıkma aşamasına gelmiştim. PHP tabanlı bi scriptimde türkçe karakterlerde sorun oluyordu bu makaleyi okuduktan sonra NOTEPAD++ ile tüm dosyalarımı UTF-8 without BOM ile kaydettim sonuç mükemmel :D Artık hiçbir sorun kalmadı. Allah razı olsun hepinizden ;)
Vallaha arkadaşlar sepetek ekle- ürün sil – sepeti güncelle – ürün ayrıntı vs sayfalarımın tamamında hiçbir sorun yokken sepeti göster linkini yaparken HATA vermeye başladı :-) ben hatayı şöle çözdüm sizinde bildiğiniz gibi @ ile hatayı görmezden gel dedim kod sonuç veriyor fakat hata görüntü kirliliğine sebeb oluyordu bölece halletmiş olduk.