PHP Hata Türleri ve Raporlama
Bildirimleri, uyarıları ve kritik hataları, ayrıca error_reporting düzeylerini anlayın.
PHP Hata Türleri ve Raporlama, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
PHP Hata Türleri
PHP'de çeşitli önem derecelerine sahip hata türleri vardır:
- Bildirim — küçük bir sorun, yürütme devam eder
- Uyarı — kurtarılamaz olmayan bir sorun, yürütme devam eder
- Önemli Hata — yürütme hemen durur
- Ayrıştırma Hatası — söz dizimi hatası, yürütmeden önce durur
- Kullanımdan Kaldırıldı — özellik kaldırılacaktır
error_reporting()
PHP'nin hangi hataları bildireceğini error_reporting() ile denetleyin:
<?php
// Show all errors (development)
error_reporting(E_ALL);
// Hide notices and deprecated
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
// Production: no display, log to file
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', '1');
ini_set('error_log', '/var/log/php_errors.log');display_errors ve log_errors
Hata işleme için önemli php.ini ayarları:
display_errors = On— hataları tarayıcıda gösterir (yalnızca geliştirme için)display_errors = Off— kullanıcılardan gizler (üretim ortamı)log_errors = On— hataları error_log dosyasına yazarerror_log = /path/to/file— günlük kaydı konumunu belirtir
Üretim ortamında hataları kullanıcılara asla göstermeyin!
trigger_error ile Hata Tetikleme
trigger_error() ile kendi PHP hatalarınızı oluşturun:
<?php
function divide(int $a, int $b): float {
if ($b === 0) {
trigger_error('Division by zero', E_USER_WARNING);
return 0.0;
}
return $a / $b;
}
echo divide(10, 0); // triggers E_USER_WARNINGÖzel Hata İşleyicisi
set_error_handler() ile kendi hata işleyicinizi kaydedin:
<?php
set_error_handler(function(int $errno, string $errstr, string $file, int $line): bool {
$message = "[$errno] $errstr in $file:$line";
error_log($message);
if ($errno === E_USER_ERROR) {
http_response_code(500);
die('Internal error — please try again later');
}
return true; // don't execute PHP internal error handler
});
trigger_error('Custom error message', E_USER_ERROR);Yaygın Hata Kaynakları
PHP hatalarının yaygın nedenleri:
- Tanımsız dizi anahtarına erişme → Bildirim
- False döndüren bir işlevi çağırıp ardından sonucu kullanma → Uyarı
- Tanımsız bir işlevi çağırma → Ölümcül Hata
- Noktalı virgülün eksik olması → Ayrıştırma Hatası
- Sıfıra bölme → Uyarı (INF veya NAN döndürür)
@ Hata Bastırma İşleci
@ işleci tek bir ifadeden kaynaklanan hataları bastırır — bundan kaçının, uygun hata işleme kullanın:
<?php
// Bad: hides errors silently
$result = @file_get_contents('missing.txt');
// Good: check explicitly
$result = file_get_contents('missing.txt');
if ($result === false) {
// handle the error
echo 'File not found';
}PHP 8 JIT ve Hata Değişiklikleri
PHP 8, bazı hata işleme kurallarını daha katı hâle getirdi:
- Birçok uyarı TypeError/ValueError türüne yükseltildi
- Basit denetimlerde düzenli ifadelerin yerini
str_contains/starts_with/ends_withaldı - Yanlış bağımsız değişken türlerinin aktarılması varsayılan olarak TypeError fırlatır
Çalışma Zamanında ini_set
php.ini ayarlarını çalışma zamanında geçersiz kılın:
<?php
// Display errors during development
if (getenv('APP_ENV') === 'development') {
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
} else {
ini_set('display_errors', '0');
ini_set('log_errors', '1');
error_reporting(E_ALL);
}Hata Seviyesini Denetleme
Bit düzeyinde AND işleciyle hata seviyelerini algılayın:
<?php
$level = error_reporting();
if ($level & E_NOTICE) {
echo 'Notices are reported';
}
if ($level & E_WARNING) {
echo 'Warnings are reported';
}
// Check specific error types
echo (E_ALL & E_NOTICE) ? 'E_ALL includes E_NOTICE' : 'no';Hata Günlük Kaydı için En İyi Uygulamalar
İyi hata günlük kaydı alışkanlıkları:
- Üretim ortamında hataları her zaman günlüğe kaydedin
- Bağlam bilgilerini ekleyin: kullanıcı ID'si, istek URL'si, zaman damgası
- Daha kolay ayrıştırma için yapılandırılmış günlük kaydı (JSON) kullanın
- Diskin dolmasını önlemek için günlük dosyalarını döndürün
- Günlükleri ELK, Datadog veya Papertrail gibi araçlarla izleyin
Hızlı Kontrol
Hangi PHP hata türü yürütmeyi hemen durdurur?
Özet: PHP Hata Raporlama
Hata işlemenin temel unsurları:
- Hata türleri: Bildirim, Uyarı, Ölümcül, Ayrıştırma, Kullanımdan Kaldırıldı
- Seviyeyi
error_reporting()ile ayarlayın - Üretim ortamında gösterimi kapatın, günlük kaydını açın
- Özel işleyiciyi
set_error_handler()ile kaydedin - Üretim kodunda
@ile hataları asla bastırmayın
Yapay zeka eğitmeniyle PHP öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 49
- Dersler
- 195
Sıkça Sorulan Sorular
“PHP Hata Türleri ve Raporlama” dersi ücretsiz mi?
Evet — “PHP Hata Türleri ve Raporlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“PHP Hata Türleri ve Raporlama” dersinde ne öğreneceğim?
Bildirimleri, uyarıları ve kritik hataları, ayrıca error_reporting düzeylerini anlayın. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“PHP Hata Türleri ve Raporlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- PHP Hata Türleri ve Raporlama
- Try, Catch ve Finally
- Özel İstisnalar Oluşturma
- Hataları Günlüğe Kaydetme ve En İyi Uygulamalar