PHP Academy · Ders

PHP Hata Türleri ve Raporlama

Bildirimleri, uyarıları ve kritik hataları, ayrıca error_reporting düzeylerini anlayın.

1. ders / 413 adım

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 yazar
  • error_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_with aldı
  • 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
Başlamak ücretsiz

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

  1. PHP Hata Türleri ve Raporlama
  2. Try, Catch ve Finally
  3. Özel İstisnalar Oluşturma
  4. Hataları Günlüğe Kaydetme ve En İyi Uygulamalar
← PHP Academy Sayfasına Dön