Warning: Cannot modify header information – headers already sent by hatasına çözüm

Web master arkadaşları sevindirmek lazım arada bir değil mi? Php kodlamayla uğraşan arkadaşların başına bela olan bu hatadan kurtulmanın yolunu anlatmaya karar verdim, ben kafayı yemeden bu çözümü buldum :)
UTF-8 BOM (Byte Order Mark) Nedir? Bu Bom denen zıkkım i.e.6.0 da falan php dosyalarınızın çok bozuk görüntülenmesine sebep olan bi zıkkımdır ;) Bu zıkkımdan kurtulmak için “notepad2” indirin ve onu kullanın derim ben… yazının devamını iyice okuyun isterseniz :)

Yakuter kardeşimizin blogundan alıntıdır :)

Aslında çok ciddi sorunlara yol açan UTF-8 BOM (Byte Order Mark) nedense birçok kişi tarafından bilinmiyor. Fakat o kadar ciddi bir durum ki sitenizin tüm karakterlerinizin bozulmasına veya sitenin tamamen çökmesine (görüntülenmemesine) neden olabiliyor. Aslında bu konuya daha önce En Yaygın WordPress Hatası başlıklı makalemde değinmiştim ama burada biraz daha geniş ve anlaşılır bir şekilde açıklamak istiyorum.

BOM UTF-8 ile birlikte ortaya çıkmış olup dosyanın UTF-8 olduğunu gösteren bir işarettir. Bir dosyanın yapısını yazı düzenleyicinizde UTF-8?e çevirirseniz bu işaret kendiliğinden dosyanın en başına eklenir. Peki nasıl bir şeydir bu BOM işareti derseniz şudur: 

Sebep Olduğu Problemler
Öncelikle başlık (header) meselesi sorunudur. Tarayıcıda ilk görüntülenmesi gerekenler başlıklardır. Fakat bu kod sayfanın en başına eklendikleri için başlıklardan önce görüntülenirler ki bu durumda bir hata mesajıyla karşılarsınız.
“Warning: Cannot modify header information – headers already sent by …“

Diğer bir sorun internet explorer’da kodu görmeseniz bile bir satırlık bir alan işgal eder ve siteniz üstten bir satır aşağıya iner. Dilediğiniz kadar css ile sıfırlamaya çalışsanızda yukarıdaki boşluğu bunu başaramazsınız çünkü orada BOM vardır.

Sayfanızda Türkçe karakterlerin tamamen bozuk görünmesine neden olabilir.

Çözüm


Çözüm oldukça basit. Dosyanızı UTF-8?e çevirirken yazı düzenleyicinizde BOM olmadan UTF-8 seçeneğini seçmelisiniz. Malesef bunu yapmak için direk kodları silemiyoruz çünkü yazı düzenleyiciler bu karakterleri görmüyor. Biz dosyanın dil yapısını değiştirerek bu işaretten kurtulacağız. En çok kullanılan iki düzenleyici olan Notepad2 ve Notepad++ yazılımlarında resimle nasıl bu işaretten kurtulabileceğinizi gösterelim.

Notepad++
Notepad++ programında Format altında BOM olmadan UTF-8 (UTF-8 without BOM)’u seçerek sorunu giderebilirsiniz.

Notepad2
Notepad2 programında File->Encoding altında sadece UTF-8 olan seçeneği seçerek sorunu çözebilirsiniz.

Eğer ANSI veya BOM’lu UTF-8 formatındaki içi kodlarla ve Türkçe karakterlerle dolu bir dosyayı BOM’suz UTF-8 yapmak için önce Ctrl+A ile tüm yazıyı seçip Kes’in. Ardından dosyanın formatını resimlerdeki gibi değiştiri. Sonra kestiklerinizi tekrar yapıştırın ve dosyanızı kaydedin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak.