WordPress’te Cannot modify header information – headers already sent hatası

Cannot modify header information – headers already sent hatası genellikle PHP kapanış etiketinden sonra gelen boşluk karakterleri sebebiyle ortaya çıkar.

Bir WordPress eklentisi üzerinde çalışıyordum. Eklentiyi etkinleştirdiğimde şu hatayı aldım.

Cannot modify header information – headers already sent by…

Ayrıntılı hata mesajı

Hata mesajında problemin nereden kaynaklandığını anlamak güç. Biraz daha ayrıntılı hata mesajları alabilmek için debug modunu etkinleştirmek gerekiyor.

WordPress sitenizin kök dizinindeki wp-config.php dosyasını açarak,

define('WP_DEBUG', false);

satırını

define('WP_DEBUG', true);

olarak değiştirin.

Hatanın çözümü

debug modu etkinleştirildiğinde hatanın hangi dosyanın hangi satırından kaynaklandığını öğrenebilirsiniz.

Buradan sonrası gayet kolay. “Cannot modify header information – headers already sent” hatası genellikle PHP kapanış etiketinden (?>) sonra gelen boşluk karakterleri sebebiyle ortaya çıkar.

Kapanış php etiketinin ardından boşluk olursa PHP headers already sent hatası ortaya çıkıyor.
Kapanış php etiketinin ardından boşluk olursa PHP headers already sent hatası ortaya çıkıyor.

Dolayısıyla ilgili dosyaya gidip kapanış php etiketinden sonraki boşluk karakterlerini silmeniz yeterli.

Aslında daha kolayı, kapanış PHP etiketini silmek. WordPress’le çalışırken PHP dosyalarının sonunda kapanış PHP etiketi kullanmayabilirsiniz.

Kaynak

PHP whitespace: Headers already sent