XDebug ile PHP Projelerini Hata Ayıklama
XDebug, PHP geliştirme sürecinde güçlü hata ayıklama, performans analiz ve kod kapsamı raporlama olanakları sunan bir araçtır. ServBay yerel geliştirme ortamına entegre edilen XDebug sayesinde, PHP projelerinizin hata ayıklama ve geliştirme süreçleri çok daha verimli ve kolay hale gelir. XDebug ile kodunuzda kırılma noktaları (breakpoint) ayarlayabilir, değişkenleri inceleyebilir, fonksiyon çağrı yığınlarını (call stack) takip edebilir ve performans darboğazlarını analiz edebilirsiniz. Böylece problemleri hızlı ve etkili bir şekilde tespit edip çözebilirsiniz.
XDebug’a Genel Bakış
XDebug, PHP için tasarlanmış ve güçlü hata ayıklama ve analiz yetenekleri sunan bir eklentidir. Uzak hata ayıklama (genellikle DBGp protokolüyle), breakpoint ayarı, adım adım yürütme, değişken değerlerini inceleme, çağrı yığınını izleme, script performansı (Profiling) analizi ve kod kapsam raporları (Coverage) üretme gibi yeteneklere sahiptir. XDebug sayesinde kodunuzun çalışma akışını ve durumunu derinlemesine analiz ederek sorunları hızlıca tespit edebilirsiniz.
XDebug’un birçok çalışma modu vardır. En yaygın kullanılanı, etkileşimli breakpoint hata ayıklama için kullanılan debug
modudur.
ServBay’de XDebug’u Etkinleştirme ve Yapılandırma
ServBay, desteklenen her PHP sürümüne XDebug eklentisini varsayılan olarak kurulu halde sunar. Manuel indirme veya derleme gerekmez.
XDebug Modülünü Etkinleştirin: ServBay uygulama arayüzünü açın.
Diller
-PHP
menüsüne girin ve XDebug kullanmak istediğiniz PHP sürümünü seçin.Eklentiler
kısmındaxdebug
modülünü bulun ve etkin olduğundan emin olun. Eğer etkin değilse, üzerine tıklayıp etkinleştirin. Etkinleştirdikten sonra PHP-FPM servisinin yeniden başlatılması gerekebilir (ServBay genellikle bu işlemi otomatik olarak yapar).IDE’nizi Yapılandırın: Kullandığınız entegre geliştirme ortamında (IDE)—ör. PHPStorm veya VS Code—XDebug bağlantısını yapılandırın. Bu genellikle dinlenen portu (XDebug ayarları ile uyumlu olmalı) belirlemeyi ve gerekirse uzak yol eşlemelerini (servis ile proje klasörü yolları farklıysa, ServBay ortamında genellikle gerekmez) içerir.
Daha fazla IDE yapılandırma detayı
XDebug’u belirli bir IDE’de (PHPStorm, VS Code vb.) nasıl yapılandıracağınız ile ilgili ayrıntılı adımlar için ilgili IDE dokümantasyonunu veya ServBay’deki Xdebug modülünü nasıl etkinleştiririm başlıklı makaleyi inceleyin.
Uygulamalı Örnek: ServBay’de PHP Projesi Nasıl Hata Ayıklanır
XDebug ile ServBay ortamında hata ayıklama işlemlerinin nasıl çalıştığını basit bir örnek proje ile inceleyelim.
1. ServBay’de Web Sitesi Kurulumu
İlk olarak, örnek projemizi barındıracak yeni bir web sitesi oluşturuyoruz:
- ServBay web sitesi kök dizini
/Applications/ServBay/www/
altında yeni bir proje klasörü oluşturun, örneğinservbay-xdebug-app
olarak adlandırın. - ServBay uygulama arayüzünü açın ve "Web Siteleri" bölümüne gidin.
- Yeni web sitesi ekleyin ve site kök dizinini
/Applications/ServBay/www/servbay-xdebug-app
olarak ayarlayın. - Yerel bir alan adı belirleyin, örneğin
servbay-xdebug-app.servbay.demo
. - Kullanmak istediğiniz PHP sürümünü seçin ve seçilen sürümde XDebug’un etkin ve yapılandırılmış olduğundan emin olun.
- Değişiklikleri kaydedip uygulayın. ServBay, Caddy/Nginx yapılandırmasını ve hosts dosyasını otomatik olarak güncelleyecek (veya ServBay’in DNS servisini kullanacaktır).
2. Örnek Proje Dizini ve Kodları
/Applications/ServBay/www/servbay-xdebug-app/
dizini altında şu dosya ve klasörleri oluşturun:
servbay-xdebug-app/
├── src/
│ └── Calculator.php
└── index.php
2
3
4
src/Calculator.php
dosya içeriği:
<?php
namespace App;
class Calculator
{
public function add($a, $b)
{
// Buraya breakpoint (kırılma noktası) yerleştirin
return $a + $b;
}
public function subtract($a, $b)
{
return $a - $b;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
index.php
dosya içeriği:
<?php
// Composer kullandığınızı varsayıyoruz, burada otomatik yükleyiciyi dahil ediyoruz
// Eğer Composer kullanmıyorsanız, yükleme şeklini duruma göre düzenleyin
require __DIR__ . '/vendor/autoload.php';
use App\Calculator;
echo "Debugging Example:\n";
$calculator = new Calculator();
$num1 = 5;
$num2 = 3;
$sum = $calculator->add($num1, $num2);
$difference = $calculator->subtract($num1, $num2);
echo "Sum: " . $sum . "\n";
echo "Difference: " . $difference . "\n";
echo "Done.\n";
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Not: Yukarıdaki require __DIR__ . '/vendor/autoload.php';
satırı Composer kullandığınız varsayımıyla eklenmiştir. Sadece test amaçlı çalışıyorsanız bu satırı silebilir ve use App\Calculator;
kısmını require __DIR__ . '/src/Calculator.php';
ile değiştirebilirsiniz.
3. Breakpoint (Kırılma Noktası) Ayarlama
IDE’nizde (ör. PHPStorm) /Applications/ServBay/www/servbay-xdebug-app/src/Calculator.php
dosyasını açın ve add
metodunun return $a + $b;
satırının solunda, satır numarasının yanında bir breakpoint ayarlayın.
4. Hata Ayıklama Oturumunu Başlatma
- IDE’nizde, XDebug bağlantılarını dinlemeye başlayın. PHPStorm’da bu, üst araç çubuğundaki “Start Listening for PHP Debug Connections” butonuna (telefon ahizesi ya da böcek simgesi) tıklamak demektir.
- Tarayıcıdan ServBay web sitenizdeki
index.php
dosyasına gidin:https://servbay-xdebug-app.servbay.demo/index.php
. - Eğer
xdebug.start_with_request
ayarınıztrigger
ise, XDebug tetikleyicisini tarayıcı eklentisiyle veya URL’ye parametre ekleyerek manuel olarak ilettiğinizden emin olun (ör.https://servbay-xdebug-app.servbay.demo/index.php?XDEBUG_TRIGGER=1
).
5. Hata Ayıklama Süreci
- Tarayıcı,
index.php
adresini çağırınca ve XDebug oturumu tetiklenince, XDebug IDE’nize otomatik olarak bağlanır ve belirlenen breakpoint’te kodun çalışmasını durdurur. - IDE hata ayıklama (debug) görünümüne geçer ve kod breakpoint’te, yani
Calculator.php
dosyasındakiadd
metodunun dönüş satırında durur.
6. Değişken Değerlerini İnceleme
- IDE’nizin hata ayıklama penceresinde, mevcut kod satırı, çağrı yığını (Call Stack), değişkenler (Variables) gibi tüm ayrıntıları görebilirsiniz.
- “Variables” panelinde, o anki kapsam (scope) içindeki değişkenlerin değerlerini inceleyebilirsiniz. Örneğin;
$a
değişkeninin5
,$b
’nin ise3
olduğunu göreceksiniz.
7. Adım Adım Yürütme
- IDE’nin adım yürütme butonlarını kullanın (
Step Over
(F8),Step Into
(F7),Step Out
(Shift+F8) vb.).Step Over
: Geçerli satırı yürütür, eğer satırda fonksiyon çağrısı varsa fonksiyonun içine girmez, fonksiyon tamamlanınca bir sonraki satıra geçer.Step Into
: Geçerli satırı yürütür, eğer fonksiyon çağrısı varsa, fonksiyonun ilk satırına adım atar.Step Out
: Mevcut fonksiyonun kalanını çalıştırır ve fonksiyondan çıkar, çağıran koda döner.
- Bu adımlarla kodun satır satır nasıl yürüdüğünü ve değişkenlerin nasıl değiştiğini izleyebilirsiniz.
8. Programı Devam Ettirme
- IDE’de yer alan “Resume Program” (devam ettir) butonuna tıklayın (genellikle yeşil oynat simgesi veya F9 tuşu). Program, bir sonraki breakpoint’e ya da sona kadar çalışmaya devam edecektir.
9. Çıktıyı Görüntüleme
Program tamamlandıktan sonra tarayıcıda (ya da CLI’da) çıktıyı görün. Bu örnek için beklenen çıktı:
textDebugging Example: Sum: 8 Difference: 2 Done.
1
2
3
4
Dikkat Edilmesi Gerekenler
- Güvenlik Duvarı: İşletim sisteminizdeki güvenlik duvarı, IDE’nin dinlediği portu (varsayılan olarak 9003) engellemiyor olmalıdır.
- Port Çakışması: XDebug için ayarlanan portun başka bir uygulama tarafından kullanılmadığından emin olun.
- Performans Etkisi:
xdebug.mode=debug
vexdebug.start_with_request=yes
şeklindeyken, tüm PHP istekleri hata ayıklama başlatmaya çalışır ve sitenizde ciddi bir yavaşlamaya neden olabilir. Hata ayıklama gerekmiyorsa XDebug modülünü devre dışı bırakın veyaxdebug.start_with_request
değerinitrigger
olarak değiştirin. - CLI Script Hata Ayıklama: XDebug, PHP’nin CLI (komut satırı) betiklerinde de kullanılabilir. Bu durumda çevre değişkenleri veya özel parametreler kullanarak hata ayıklamayı başlatabilirsiniz. Ayrıntılar için XDebug resmi dökümantasyonuna bakın.
- IDE Sürümü ve Yapılandırma: Farklı IDE sürümleri ve ayar arayüzleri çeşitli farklılıklar gösterebilir, her zaman kullandığınız IDE’nin resmi belgelerine başvurun.
Sıkça Sorulan Sorular (SSS)
S: IDE’m XDebug’a bağlanmıyor, ne yapmalıyım?
C: Şu noktaları kontrol edin:
- ServBay’de kullandığınız PHP sürümünde XDebug modülünün etkin olduğundan emin olun.
php.ini
dosyasındakixdebug.mode
,xdebug.client_host
,xdebug.client_port
ayarlarının doğru olmasına; ayrıcaclient_host
veclient_port
değerlerinin IDE’nizin dinlediği port ile uyumlu olmasına bakın.xdebug.start_with_request = trigger
kullanıyorsanız, gerekli tetikleyiciyi (GET/POST parametresi, Cookie veya Header) eklediğinize emin olun.- Güvenlik duvarınızda XDebug portu için gerekli izne sahip olduğunuzdan emin olun.
- IDE'nizin bahsi geçen portu gerçekten dinlediğinden emin olun.
S: Web sitem XDebug açıkken neden çok yavaşladı?
C: Büyük ihtimalle xdebug.start_with_request
ayarı yes
olarak belirlenmiş. Bu şekilde ayarlandığında tüm PHP istekleri hata ayıklama başlatmak ister, bu da ciddi yavaşlamaya neden olur. Sadece ihtiyacınız olduğunda manuel tetikleme (trigger) moduna alarak sorunu çözebilirsiniz.
S: XDebug ile AJAX isteklerini hata ayıklayabilir miyim?
C: Evet. AJAX isteklerinde hata ayıklama, normal HTTP isteklerinden farksızdır. Sadece AJAX isteğine de XDebug tetikleyicisinin (genellikle Cookie veya Header ile) eklendiğinden emin olun.
S: XDebug yalnızca PHPStorm’u mu destekliyor, yoksa ServBay ile VS Code gibi diğer IDE’ler de kullanılabilir mi?
C: Evet, kullanılabilir. ServBay’in entegre XDebug’u standart bir PHP eklentisi olduğu için DBGp hata ayıklama protokolünü destekleyen tüm IDE ve editörlerde çalışır. Bunlar arasında VS Code (PHP Debug eklentisiyle), NetBeans, Eclipse vb. de bulunur. Genel olarak sadece IDE’nizde doğru portu dinlemeniz yeterlidir.
Sonuç
ServBay’in entegre XDebug’u sayesinde, PHP projelerinizi yerel ortamda kolayca ve etkili bir şekilde hata ayıklayabilirsiniz. Breakpoint, değişken analizi, adım adım yürütme gibi temel hata ayıklama becerilerine hakim olarak hataları tespit ve çözme süreçlerinizi ciddi derecede hızlandırabilir, kod kalitenizi artırabilirsiniz. ServBay’in sunduğu pratik ortam yönetimiyle birleştirildiğinde, XDebug PHP geliştirme akışınızda vazgeçilmez bir yardımcıya dönüşecektir. ServBay’de XDebug ile programlamanın kolaylığını ve verimini hemen keşfedin!