CodeBlanks Logo Icon CodeBlanks

Yükleme hata yönetimi

PHP kursu · Orta seviye · Ders 80/115

$_FILES['file']['error'] kodlarını okuyup anlamlı hata mesajları vermeyi öğrenirsin.

Yükleme hata kodları

Her yükleme bir hata kodu taşır. Bu kod $_FILES['avatar']['error'] alanında bulunur. Kod 0 (UPLOAD_ERR_OK) ise yükleme başarılıdır; başka bir değer ise bir sorun vardır.

Hata kodlarını bilmek, kullanıcıya doğru mesajı vermene yardımcı olur. Örneğin 'dosya çok büyük' ile 'dosya gönderilmedi' farklı durumlardır ve farklı mesajlar gerektirir.

PHP bu kodları UPLOAD_ERR_* sabitleriyle tanımlar. Sabitleri kullanmak (0 yerine UPLOAD_ERR_OK) kodu daha okunabilir yapar.

Sık karşılaşılan sabitler

En sık karşılaşılan hata sabitleri şunlardır:

  • UPLOAD_ERR_OK (0): hata yok, yükleme başarılı
  • UPLOAD_ERR_INI_SIZE (1): upload_max_filesize aşıldı
  • UPLOAD_ERR_PARTIAL (3): dosya kısmen yüklendi
  • UPLOAD_ERR_NO_FILE (4): dosya seçilmedi

Bunları bir match veya dizi ile mesajlara çevirirsin. Örneğin $messages = [UPLOAD_ERR_OK => 'Hata yok', ...]. Sonra kodu $messages[$code] ?? 'Bilinmeyen' ile okursun; böylece her koda anlamlı bir açıklama bulursun.

Uygulama errorMessage fonksiyonu

Bir errorMessage(int $code): string fonksiyonu yaz. İçinde $messages dizisini UPLOAD_ERR_OK, UPLOAD_ERR_INI_SIZE, UPLOAD_ERR_PARTIAL ve UPLOAD_ERR_NO_FILE anahtarlarıyla tanımla (değerler sırayla 'Hata yok', 'php.ini sınırı aşıldı', 'Kısmi yükleme', 'Dosya yok'). Sonra return $messages[$code] ?? 'Bilinmeyen: ' . $code döndür. En son UPLOAD_ERR_OK, UPLOAD_ERR_INI_SIZE ve UPLOAD_ERR_NO_FILE için echo errorMessage(...) . "\n" çağır.

Örnek çözümü göster
' + code ile döndür. Üç kodu sırayla echo ile yazdır.
Örnek çözüm:
<?php
// Hata kodundan mesaj üret
function errorMessage(int $code): string {
    $messages = [
        UPLOAD_ERR_OK => "Hata yok",
        UPLOAD_ERR_INI_SIZE => "php.ini sınırı aşıldı",
        UPLOAD_ERR_PARTIAL => "Kısmi yükleme",
        UPLOAD_ERR_NO_FILE => "Dosya yok",
    ];
    return $messages[$code] ?? "Bilinmeyen: " . $code;
}

echo errorMessage(UPLOAD_ERR_OK) . "\n";
echo errorMessage(UPLOAD_ERR_INI_SIZE) . "\n";
echo errorMessage(UPLOAD_ERR_NO_FILE) . "\n";

Kendini test et

  1. Sabitleri anlamlarıyla eşleştir

    UPLOAD_ERR_OK
    Hata yok
    UPLOAD_ERR_INI_SIZE
    php.ini sınırı
    UPLOAD_ERR_PARTIAL
    Kısmi yükleme
    UPLOAD_ERR_NO_FILE
    Dosya gönderilmedi
  2. Hangi sabit başarılı yüklemeyi belirtir?

    • UPLOAD_ERR_INI_SIZE
    • UPLOAD_ERR_OK
    • UPLOAD_ERR_PARTIAL
    • UPLOAD_ERR_NO_FILE
    Cevabı göster

    UPLOAD_ERR_OK — Doğru. UPLOAD_ERR_OK hata yok demektir.

  3. Başarı kontrolü

    if ($file['error'] === ____) { return 'Tamam'; }
    Cevabı göster
    if ($file['error'] === UPLOAD_ERR_OK) { return 'Tamam'; }

Orta seviye bölümündeki tüm dersler