24
dilberbilgin1284 Efsane
116 görüntülenme · 24 yorum

PHP Hata Ayıklama (Debugging) Teknikleri

(31 oy, 4/5)

PHP'de Hata Ayıklama Yöntemleri

PHP geliştirirken karşılaşılan hataları bulmak ve düzeltmek için kullanabileceğiniz çeşitli teknikler bulunmaktadır.

1. var_dump ve print_r

En temel hata ayıklama yöntemi:

var_dump($degisken);
print_r($dizi);
die('Burada dur');

2. Hata Raporlamayı Açma

error_reporting(E_ALL);
ini_set('display_errors', 1);

3. try-catch ile İstisna Yönetimi

try {
    $sonuc = bolmeIslemi($sayi1, $sayi2);
} catch (DivisionByZeroError $e) {
    echo "Hata: " . $e->getMessage();
    logKaydet($e);
}

4. Log Dosyasına Yazma

error_log("Kullanıcı giriş yaptı: ID $id", 3, __DIR__ . '/logs/uygulama.log');

5. Xdebug Kullanımı

Xdebug ile adım adım kod çalıştırabilir, değişken değerlerini anlık görebilirsiniz.

Hata ayıklama için hangi yöntemleri kullanıyorsunuz? Xdebug kullanan var mı?

  • En İyi Ücretsiz Yazılım Programları 2026: Kapsamlı Kullanım Rehberi ve İncelemeler
  • Yapay Zeka ile Resim Oluşturma Araçları 2026
  • PHP Hata Ayıklama (Debugging) Teknikleri Hakkında Tartışmalar ve Yorumlar

    En Çok Beğenilen Yorum (5 ❤️)
    Ömerorhan9289 · 16.07.2026 18:43

    Yazıdaki noktaların hepsi çok önemli. Özellikle performans konusuna değinmeniz çok iyi olmuş. Hız her şeydir.

    fikretyildiz541 1 yorum
    15.07.2026 11:44 (düzenlendi)
    `try-catch` ile istisna yönetimi güzel bir yaklaşım ama ben genelde büyük projelerde hata raporlamayı (error_reporting) production ortamında tamamen kapatıyorum. Siz acaba production'da DivisionByZeroError gibi spesifik hataları mı yoksa genel Exception'ları mı yakalamayı tercih ediyorsunuz, yoksa her ikisini ayrı ayrı mı handle ediyorsunuz?
    +1 puan
    bulentaydin7245 1 yorum
    15.07.2026 16:10 (düzenlendi)

    Çok teşekkürler. Gerçekten ihtiyacım olan bir konuydu. Bu kadar detaylı ve anlaşılır bir anlatım bulduğum için mutluyum.

    +4 puan
    aykutyuksel5911 1 yorum
    15.07.2026 16:52 (düzenlendi)

    Yazıdaki kod örneklerini test ettim ve çalışıyor. Çok faydalı bir kaynak. Bunu mutlaka bookmarklamalısınız.

    +1 puan
    15.07.2026 17:38 (düzenlendi)
    Bu paylaşım çok faydalı olmuş, özellikle `var_dump` ve `print_r` ile başlayıp `try-catch` istisna yönetimine kadar adım adım gitmeniz harika. Hata raporlamayı açma konusundaki `error_reporting(E_ALL)` ve `ini_set('display_errors', 1)` satırlarını projelerimde mutlaka kullanmam gerekiyordu, şimdi tam yerini öğrendim. `DivisionByZeroError` örneği de çok netleştirici, bölm işlemlerinde bu tarz kontrolleri atlamamak lazım. Elinize sağlık, PHP debug süreçlerini ciddi anlamda kolaylaştıracak bir rehber olmuş.
    15.07.2026 19:54 (düzenlendi)
    Merhaba, `error_reporting(E_ALL); ` kısmına katılıyorum amaproduction ortamında `display_errors` değerinin kesinlikle 0 olması lazım, güvenlik açığı oluşturabilir. Ayrıca `var_dump` çıktısı okunabilirlik açısından biraz karmaşık olabiliyor, `print_r($dizi, true)` ile string'e atayıp HTML içinde `
    ` etiketiyle yazdırmak çok daha temiz bir sonuç veriyor. Bir de `try-catch` bloğuna ek olarak `finally` yapıs                    
    enginceylan7659 1 yorum
    16.07.2026 01:06 (düzenlendi)
    Hocam çok faydalı bir içerik olmuş, özellikle `DivisionByZeroError` ile `try-catch` kullanımını vermeniz çok yerinde. Bir de `error_reporting(E_ALL)` ile hata raporlamayı açmayı bir arada göstermeniz, bize aslında basit ama çoğu zaman atlanan bir adımı tekrar hatırlattı. Teşekkürler bu güzel derleme için!
    saniyebaran3510 1 yorum
    16.07.2026 02:00 (düzenlendi)
    Çok faydalı bir paylaşım olmuş, özellikle `error_reporting(E_ALL)` ile `ini_set('display_errors', 1)` kombinasyonunu projelerimin başında eklemeyi alışkanlık haline getirmiştim, development ortamında hata yakalamada gerçekten büyük kolaylık sağlıyor. Ayrıca `try-catch` bloğunda `DivisionByZeroError` örneği tam yerinde olmuş, division by zero hatası her PHP geliştiricinin mutlaka karşılaşacağı bir şey ve istisna yönetimiyle düzgün ele alındığında kodun güvenilirliği çok artıyor. Teşekkürler!
    +1 puan
    16.07.2026 06:15 (düzenlendi)
    Hata raporlamayı açmayı unuttuğum zamanlar olmuştur, display_errors kapalıyken production ortamında saatlerce bir hatayı aradığım bile oldu. Özellikle DivisionByZeroError gibi durumlar için try-catch kullanmak çok mantıklı, eskiden sadece die() ile kodu kesip durduruyordum ama istisna yönetimi çok daha temiz bir çözüm sunuyor. var_dump her ne kadar basit görünse de Acil durumlarda hâlâ en hızlı yoldur, bir dizinin yapısını anlık olarak görmek istediğimde başka bir alternatif düşünmüyorum bile.
    +2 puan
    İclalsari7417 1 yorum
    16.07.2026 06:53 (düzenlendi)
    var_dump ile hata ayıklama her zaman işime yarıyor ama projede çok fazla değişken varsa terminalde output gerçekten çok karışıyor. Siz big. projelerde hangi IDE'yi tercih ediyorsunuz, PhpStorm mu yoksa Visual Studio Code mu daha iyi bu konuda? Özellikle Xdebug entegrasyonu konusunda tecrübelerinizi merak ediyorum.
    +1 puan
    dorukyilmaz2951 1 yorum
    16.07.2026 12:03 (düzenlendi)
    var_dump/print_r ile debug etmek proje büyüdükçe gerçekten çok karışıyor, bir yerden sonra ekranı text dolduruyor ama hala çok işime yarıyorilk aşamada. Ama asıl can alıcı nokta try-catch tarafı — DivisionByZeroError örneğini vermişsin, aslında burada biraz eksik kalmış, çünkü PHP 8'de DivisionByZeroError ayrı bir class olarak gelirken PHP 7'de bunu bir warning olarak alıyorduk, yani sürüme göre davranışı değişiyor. Hata raporlamayı geliştirme ortamında açmak şart ama production'da bunu açık bırakmamak lazım, orada log dosyasına yazdırmak çok daha mantıklı. Yani kısacası her tekniğin bir kullanım alanı var, hepsini bir arada kullanınca en verimli sonucu alıyorsun.
    +2 puan
    alphandogan7752 1 yorum
    16.07.2026 12:07 (düzenlendi)
    var_dump ve print_r ile. debugging yapmak projede kalıcı izler bırakıyor, production ortamında unutulduğunda ciddi güvenlik açıkları oluşabilir. Ayrıca try-catch bloğunda DivisionByZeroError kullanılmış ama PHP 7'de bu bir Exception değil Error olarak tanımlı, dolayısıyla yakalayabilmek için base Throwable'a bakmak daha güvenli olurdu. Hata raporlamayı her yerde E_ALL ile açmak da zaten iyi bir şey değil; development'da ayrı production'da ayrı yapılandırılması lazım.
    +2 puan
    berkgurbuz3258 1 yorum
    16.07.2026 13:28 (düzenlendi)
    `error_reporting(E_ALL)` kısmına katılıyorum, ama bunu üretim ortamında kesinlikle aktif bırakmamak lazım. Bir de `var_dump` yerine Xdebug kurulursa çıktı çok daha okunabilir hale geliyor, renkli ve ağaç yapısıyla gösteriyor değişkenleri. `try-catch` örneğinde DivisionByZeroError güzel de, genelde bir `catch (Throwable $e)` bloğu daha eklemek her türlünü yakalamak açısından daha güvenli olur.
    polatzengin6333 1 yorum
    16.07.2026 15:55 (düzenlendi)

    Yazıdaki noktaların hepsi çok önemli. Özellikle performans konusuna değinmeniz çok iyi olmuş. Hız her şeydir.

    +2 puan
    nevinsayar251 1 yorum
    16.07.2026 18:06 (düzenlendi)
    var_dump ve print_r'yi "en temel hata ayıklama yöntemi" diye sunmuşsunuz ama bunlar aslında production'da etmemeniz gereken, geçici çözüm yolları. Xdebug, VS Code entegrasyonu veya loglama kütüphaneleri gibi modern teknikler hiç değinilmemiş ki asıl profesyonel geliştirme bunlarla yapılıyor. Ayrıca try-catch örneğinin kapanış parantezi (}) eksik kalmış, tam da hata ayıklama konusunda yaz
    +1 puan
    elifbilgin7628 1 yorum
    16.07.2026 18:43
    var_dump ve print_r her ne kadar temel görünse de, gerçekten projede işinizi çöken bir debug stratejisi kurmadığınızda en çok başvuracağınız araçlar oluyor. Ben özellikle büyük bir diziyi kontrol ederken print_r'nin çıktısını readfile ile bir log dosyasına yönlendirerek terminalin şişmesini engelliyordum, yoksa console'da kaybolup gidiyorsunuz. Ayrıca denediyseniz bilirsiniz, error_reporting'i production'da unutup açık bırakmak gibi bir Facia var ki, tüm warning'ler kullanıcıya dökülüyor — try-catch mekanizmasını kurmadan önce hatayı en azından log'a basmak bile büyük avantaj sağlıyor gerçekten.
    +2 puan
    16.07.2026 18:43
    Hocam paylaşım çok faydalı olmuş, özellikle `error_reporting(E_ALL)` ve `ini_set('display_errors', 1)` satırlarını projeye ekleyerek development aşamasında gizli hataları yakalamak gerçekten büyük kolaylık sağlıyor. Bir de `try-catch` kısmında `DivisionByZeroError` spesifik olarak ele alınmış, bu tür istisna yönetimlerinin kod güvenliği açısından ne kadar önemli olduğunu unutmamak lazım. Teşekkürler!
    Ömerorhan9289 1 yorum
    16.07.2026 18:43

    Yazıdaki noktaların hepsi çok önemli. Özellikle performans konusuna değinmeniz çok iyi olmuş. Hız her şeydir.

    +5 puan
    gulzengin7093 1 yorum
    16.07.2026 18:43

    İşte bu yüzden bu forumu seviyorum. Her gün yeni bir şey öğreniyorum. Paylaşım kültürü çok değerli bir şey.

    +2 puan
    koraykale3372 1 yorum
    16.07.2026 18:43
    Hata raporlamayı `display_errors` ile production ortamında açık bırakmak büyük güvenlik açığı yaratır, log dosyalarına yazdırmak çok daha sağlıklı bir yaklaşım olurdu. Ayrıca `var_dump` ve `print_r` gibi yöntemler 2024'te hâlâ birinci sırada yer alıyorsa yazık, en azından Laravel Telescope veya Xdebug'dan bahsedilmeliydi. `try-catch` örneğinde sadece `DivisionByZeroError` yakalanmış ama gerçek hayatta `Exception` veya `Throwable` ile geniş kapsamlı yakalama yapmak daha doğru değil mi? Bir de makalenin tamamı kesilmiş, `catch` bloğu yarım kalmış, bu haliyle yayınlanmamalıydı bence.
    +4 puan
    16.07.2026 19:14 (düzenlendi)

    Çok teşekkürler. Gerçekten ihtiyacım olan bir konuydu. Bu kadar detaylı ve anlaşılır bir anlatım bulduğum için mutluyum.

    +1 puan
    1 2

    İlgili Konular