
Sitenize girdiniz ve karşınızda bomboş beyaz bir sayfa var. Hata mesajı yok, ipucu yok. Bu, PHP dünyasının en can sıkıcı durumudur ve nedeni aslında basittir: bir ölümcül hata oluşmuştur ama hata gösterimi kapalı olduğu için mesaj ekrana basılmamıştır.
Bu rehber, Linux barındırma veya Windows barındırma hesabınızda hataları görünür kılmayı ve doğru okumayı anlatıyor.
İlk Adım: Hatayı Görünür Kılmak
Üretim ortamında hata mesajlarının ziyaretçilere gösterilmemesi doğru bir tercihtir — mesajlar sunucu yollarını, veritabanı yapısını ve yapılandırma bilgilerini sızdırır. Ancak sorun ararken bu mesajlara ihtiyacınız vardır.
Doğru yaklaşım, mesajları ekrana değil log dosyasına yazdırmaktır. Böylece siz hatayı görürsünüz, ziyaretçiler görmez.
Hosting panelinizde PHP ayarları bölümünde şunları yapılandırın:
- Hata gösterimi: Kapalı kalsın (ziyaretçiye gösterilmesin).
- Hata kaydı: Açık olsun.
- Hata seviyesi: Tüm hataları kapsayacak şekilde ayarlansın — uyarılar dahil.
- Log dosyası yolu: Bilinen ve erişebildiğiniz bir konum olsun.
Log dosyasının konumunu bilmiyorsanız panelin hata log görüntüleyicisini kullanın; çoğu panel bunu hazır sunar.
Log Nerede? Üç Farklı Dosya
Karışıklığın yaygın nedeni, birden fazla log dosyasının var olmasıdır ve aradığınız satır hangisindeyse orada durur:
| Log | Ne içerir |
|---|---|
| PHP hata logu | Kod hataları, uyarılar, ölümcül hatalar |
| Web sunucusu hata logu | Yapılandırma hataları, izin sorunları, 500 kayıtları |
| Uygulama logu | Uygulamanızın kendi yazdığı kayıtlar |
Beyaz ekran genellikle birinci logdadır. Sayfa 500 hatası veriyorsa ikinciye de bakın — yönlendirme kuralı hatası veya izin sorunu orada görünür.
En Sık Karşılaşılan Beş Hata ve Anlamları
1. Bellek Limiti Aşıldı
Beyaz ekranın en yaygın nedenidir. Bir istek, PHP'ye tanımlanan bellek üst sınırını aşmıştır.
Çözüm sırası: Önce limiti panelden makul bir seviyeye yükseltin. Sorun çözülürse geçici olarak rahatlarsınız — ama asıl soruyu sorun: tek bir istek neden bu kadar bellek tüketiyor? Genellikle cevap, binlerce kaydı tek seferde belleğe çeken bir sorgudur. Limiti sürekli yükseltmek, sorunu ertelemektir.
2. Maksimum Çalışma Süresi Aşıldı
Betik, izin verilen süreden uzun çalışmıştır. Genellikle yavaş bir sorgu, yanıt vermeyen bir dış servis çağrısı veya büyük bir toplu işlem söz konusudur.
Çözüm: Uzun işlemleri web isteği içinde çalıştırmayın; zamanlanmış bir göreve taşıyın. Dış servis çağrılarına mutlaka zaman aşımı tanımlayın — zaman aşımı olmayan tek bir çağrı, tüm sayfayı kilitler.
3. Dosya veya Sınıf Bulunamadı
Beklenen dosya yerinde değil. Dört olası neden vardır ve üçüncüsü en sinsi olanıdır:
- Dosya gerçekten eksik (aktarım tamamlanmamış)
- Yol yanlış yazılmış
- Büyük/küçük harf uyuşmazlığı — Linux'ta
Logo.pngilelogo.pngfarklı dosyalardır. Windows'tan taşınan sitelerde bu sorun sıkça yaşanır ve teşhisi zordur çünkü kod "doğru görünür". - İzin sorunu — dosya var ama okunamıyor
4. Veritabanına Bağlanılamıyor
Bağlantı bilgileri hatalı, veritabanı kullanıcısının yetkisi yok veya veritabanı sunucusu yanıt vermiyor.
Teşhis: Panelden veritabanı yönetim aracına aynı bilgilerle girmeyi deneyin. Giriş yapabiliyorsanız sorun bilgilerde değil, uygulamanın yapılandırma dosyasındadır. Giremiyorsanız kullanıcı veya yetki sorunudur.
5. İzin Reddedildi
Uygulama bir dosyaya yazmaya çalışıyor ama yetkisi yok. Genellikle yükleme, önbellek veya log dizinlerinde görülür.
Dikkat: Çözüm olarak her şeye geniş yazma izni vermeyin. Yalnızca gerçekten yazılması gereken dizine, gereken izni verin.
Sorunu Daraltma Yöntemi
Hata mesajı belirsizse veya hangi bileşenin sorumlu olduğu anlaşılmıyorsa, sistematik daraltma en hızlı yoldur:
- Ne zaman bozuldu? Son değişiklik neydi — bir eklenti güncellemesi, bir kod dağıtımı, bir PHP sürüm değişikliği? Zaman çizelgesi genellikle suçluyu doğrudan gösterir.
- Her sayfada mı, tek sayfada mı? Tek sayfadaysa o sayfanın koduna odaklanın. Hepsinde ise ortak bir bileşen (tema, temel yapılandırma) sorumludur.
- Eklentileri devre dışı bırakın. Hepsini kapatıp sorun geçiyorsa, tek tek açarak sorumluyu bulun.
- Varsayılan temaya geçin. Sorun kayboluyorsa tema kaynaklıdır.
- Log zaman damgasıyla eşleştirin. Sayfayı yenileyin, o anki zaman damgasına sahip log satırını bulun. Bu, ilgisiz eski hatalarla vakit kaybetmenizi önler.
Üretimde Hata Ayıklarken
- Ekrana hata bastırmayın. Log dosyasına yazdırın. Ayrıntılı hata mesajları sunucu yolları ve veritabanı yapısı sızdırır.
- Hata ayıklama modunu açık unutmayın. Sorun çözüldükten sonra kapatın. Açık unutulmuş bir hata ayıklama modu, hem güvenlik hem performans sorunudur.
- Mümkünse test kopyasında çalışın. Alt alan adında bir kopya oluşturup denemeleri orada yapın.
- Değişiklik öncesi yedek alın. Özellikle yapılandırma dosyalarına dokunmadan önce.
Sonuç
PHP hata ayıklamada işin yarısı, hatayı görünür kılmaktır — beyaz ekran bir bilgi eksikliğidir, çözümsüzlük değil. Hata kaydını log dosyasına yönlendirin, doğru log dosyasına bakın ve zaman damgasıyla eşleştirin. Bu üç adım, teşhis süresini saatlerden dakikalara indirir. Bellek limiti gibi hataları kalıcı olarak yükselterek çözmek yerine, tek bir isteğin neden o kadar kaynak tükettiğini sorun — asıl çözüm oradadır.
Sıkça Sorulan Sorular (SSS)
Beyaz ekran alıyorum, nereden başlamalıyım?
PHP hata kaydını açıp log dosyasına bakın. Beyaz ekran, ölümcül bir hatanın oluştuğu ama mesajın ekrana basılmadığı anlamına gelir — mesaj logdadır. En yaygın neden bellek limitinin aşılmasıdır.
Bellek limitini sürekli yükseltmek doğru mu?
Geçici çözüm olarak makul, kalıcı çözüm olarak değil. Bir isteğin çok fazla bellek tüketmesi genellikle kod sorununa işaret eder — örneğin binlerce kaydı tek seferde belleğe çeken bir sorgu. Limiti yükseltmek sorunu erteler, büyümeyle birlikte geri gelir.
Log dosyasını bulamıyorum
Hosting panelinizin hata log görüntüleyicisini kullanın; çoğu panel bunu hazır sunar. Yoksa PHP ayarlarında log dosyası yolunu kendiniz tanımlayabilirsiniz — hesabınız içinde, web erişimine kapalı bir konum seçin.
Windows'tan taşıdım, bazı dosyalar bulunamıyor
Neredeyse kesinlikle büyük/küçük harf uyuşmazlığı. Windows dosya sistemi harf duyarsızdır, Linux duyarlıdır. Koddaki dosya referanslarıyla gerçek dosya adlarını karşılaştırın — bu, platform değiştiren taşımalarda en sık yaşanan sorundur.