WPHizmet

Warning: Cannot Modify Header Information – Headers Already Sent

Yayınlandı:
Son teknik kontrol:
1.5 dk okuma
İşlev bozukWordPress
Warning: Cannot modify header information - headers already sent by (output started at /wp-config.php:1) in /wp-includes/pluggable.php on line …

Belirtiler

  • “Warning: Cannot modify header information - headers already sent by” satırı
  • Giriş yaptıktan sonra boş sayfa veya yönlendirme olmaması
  • Kaydet/Güncelle düğmesinden sonra beyaz sayfa ve uyarı
  • Sorun bir dosyayı elle düzenledikten veya siteyi taşıdıktan sonra başladı

Kısa cevap

Bu uyarı, PHP’nin HTTP başlıklarını (yönlendirme, çerez) göndermeye çalıştığı anda sayfaya zaten çıktı yazılmış olduğunu söyler. Başlıklar yalnızca herhangi bir çıktıdan önce gönderilebilir. Suçlu çoğunlukla bir dosyanın başındaki boşluk veya görünmez BOM karakteri ya da kapanış ?> etiketinden sonra kalan boş satırdır. Mesajdaki “output started at” bölümü çıktının başladığı dosyayı ve satırı gösterir; düzeltilecek yer orasıdır.

Önemli noktalar

  • Mesajdaki “output started at dosya:satır” sorunun yeridir; “in … on line” kısmı yalnızca etkilenen yerdir.
  • Dosyanın <?php etiketinden önceki tek bir boşluk veya BOM karakteri bu hatayı üretir.
  • Yalnızca PHP içeren dosyalarda kapanış ?> etiketini yazmamak bu hatanın en yaygın kaynağını ortadan kaldırır.
  • Çıktı tamponlaması açık sunucularda aynı hata görünmeyebilir; bu yüzden hata taşımadan sonra ortaya çıkabilir.

Mesajı doğru okumak

Mesajda iki dosya yolu vardır ve çoğu kişi yanlış olanı düzenler. “output started at” sonrasındaki dosya ve satır, çıktının başladığı yerdir — düzeltilecek dosya budur. “in … on line” kısmı ise başlığı göndermeye çalışan yerdir; genellikle WordPress çekirdeğindeki pluggable.php’dir ve orada bir sorun yoktur.

“output started at” gösterdiği yerOlası nedenÇözüm
wp-config.php:1Dosyanın başında <?php öncesi boşluk veya BOM karakteriDosyayı UTF-8 (BOM’suz) kaydedin, <?php en baştaki karakter olsun
functions.php’nin son satırıKapanış ?> etiketinden sonra boş satırDosya sonundaki ?> etiketini ve sonrasındaki boşlukları silin
Bir eklenti dosyasıEklenti başlık gönderilmeden önce çıktı üretiyor (echo, hata mesajı)Eklentiyi güncelleyin veya devre dışı bırakıp geliştiricisine bildirin
Bir PHP uyarısının kendisiÖnce başka bir uyarı ekrana yazılmış, o da çıktı sayılmışİlk uyarıyı düzeltin; canlı sitede hata gösterimini kapatın
Uyarılar PHP 8.2 ile yerelde üretildi.

BOM karakteri nedir, nasıl temizlenir?

BOM (Byte Order Mark), bazı metin düzenleyicilerin UTF-8 dosyaların en başına eklediği görünmez bir karakterdir. Dosyada göremezsiniz ama PHP onu çıktı olarak gönderir. Kod düzenleyicinizde dosyayı “UTF-8” (BOM’suz) olarak yeniden kaydetmek sorunu giderir. Windows Not Defteri’nin eski sürümleri gibi araçlar BOM ekleyebildiği için PHP dosyalarını kod düzenleyiciyle düzenleyin.

Doğru: dosya <?php ile başlar, kapanış etiketi yok
<?php
// Yalnızca PHP içeren dosyalarda kapanış etiketi yazılmaz.
// Böylece sonuna yanlışlıkla boşluk veya boş satır eklenemez.

add_action( 'init', function () {
    // …
} );

Sık sorulan sorular

Uyarı ekranda görünmüyor ama giriş yapamıyorum.
Hata gösterimi kapalıysa uyarı ekrana yazılmaz ama başlık yine gönderilemez; giriş çerezi yazılamadığı için giriş döngüsü oluşur. Hata günlüğünü açın, “headers already sent” satırını orada bulursunuz.
wp-config.php’yi düzenlemedim, hata yine orayı gösteriyor.
Bazı hosting araçları veya eklentiler wp-config.php’ye satır ekler; bu sırada dosyanın başına boşluk veya BOM eklenmiş olabilir. Dosyayı indirip bir kod düzenleyicide açın, <?php etiketinin gerçekten ilk karakter olduğunu doğrulayın.
Uyarıyı kapatmak yeterli mi?
Hayır. Uyarıyı gizlemek yalnızca mesajı saklar; yönlendirme ve çerez yine çalışmaz. Çıktıyı yapan satır düzeltilmelidir.

Kaynaklar ve teknik referanslar

Bu hatayı çözemediyseniz

İlgili içerikler