Php Unlink Sunucudan Dosya Silme İşlemi - Akın Boztepe Blog

PHP'de PDO kullanarak veritabanından bir kaydı silerken, o kayda bağlı olan fiziksel dosyayı (resim, PDF vb.) sunucudan temizlemek, sunucunun depolama alanını gereksiz doluluktan korumak için kritik bir adımdır.

Bu makalede, hem veritabanı kaydını hem de sunucudaki fiziksel dosyayı koordineli bir şekilde silmeyi öğreneceğiz.


İşlem Akışı Nasıl Olmalı?

Sadece DELETE sorgusu çalıştırmak dosyayı sunucudan kaldırmaz. Doğru işlem sırası şu şekildedir:

  1. Veritabanından dosyanın yolunu (path) sorgula.

  2. PHP unlink() fonksiyonu ile dosyayı sunucudan sil.

  3. Dosya silindikten sonra veritabanı kaydını sil.


Uygulama Örneği

Aşağıdaki kod, belirli bir ID'ye sahip görseli hem klasörden hem de veritabanından siler:

PHP

 

<?php
require_once 'db_config.php';

$id = 5; // Silinecek kaydın ID'si

try {
    // 1. Önce dosya yolunu veritabanından çekiyoruz
    $sorgu = $pdo->prepare("SELECT dosya_yolu FROM gorseller WHERE id = :id");
    $sorgu->execute(['id' => $id]);
    $kayit = $sorgu->fetch(PDO::FETCH_ASSOC);

    if ($kayit) {
        $dosyaYolu = $kayit['dosya_yolu'];

        // 2. Fiziksel dosyayı sunucudan silme
        if (file_exists($dosyaYolu)) { // Dosya gerçekten var mı kontrol et
            if (unlink($dosyaYolu)) {
                
                // 3. Dosya silindiyse veritabanı kaydını sil
                $sil = $pdo->prepare("DELETE FROM gorseller WHERE id = :id");
                $sil->execute(['id' => $id]);
                
                echo "Dosya ve veritabanı kaydı başarıyla silindi.";
            } else {
                echo "Dosya sunucudan silinirken bir hata oluştu.";
            }
        } else {
            // Dosya fiziksel olarak yoksa bile kaydı silebiliriz
            $sil = $pdo->prepare("DELETE FROM gorseller WHERE id = :id");
            $sil->execute(['id' => $id]);
            echo "Fiziksel dosya bulunamadı, ancak veritabanı kaydı temizlendi.";
        }
    } else {
        echo "Kayıt bulunamadı.";
    }

} catch (PDOException $e) {
    die("Hata: " . $e->getMessage());
}
?>

Önemli İpuçları ve Güvenlik

unlink() Fonksiyonu

PHP'nin unlink() fonksiyonu, parametre olarak verilen dosya yolundaki dosyayı kalıcı olarak siler. Eğer dosya yolu hatalıysa veya izin problemleri varsa hata döndürür.

file_exists() Kontrolü

Dosyayı silmeye çalışmadan önce file_exists() ile dosyanın yerinde olup olmadığını kontrol etmek, kodun hata vermesini önleyen profesyonel bir yaklaşımdır.

Hatalı Silme İşlemlerini Önleme

Eğer bir dosya birden fazla kayıt tarafından kullanılıyorsa (örneğin bir varsayılan profil resmi), unlink() yapmadan önce o dosyayı kullanan başka kayıt olup olmadığını kontrol etmeniz gerekebilir:

PHP

 

// Bu dosyayı kullanan başka biri var mı?
$kontrol = $pdo->prepare("SELECT COUNT(*) FROM gorseller WHERE dosya_yolu = :yol");
$kontrol->execute(['yol' => $dosyaYolu]);
if ($kontrol->fetchColumn() == 1) {
    unlink($dosyaYolu); // Sadece 1 kişi kullanıyorsa sil
}

Benzer İçerikler :


İstatistikler

Yazar : admin

Kategori : Php Dersleri

Görüntülenme : 45

Tarih : 17 March 2026 - 03:25

Duyuru

Sitemiz 17.03.2026 tarihinde Bakım Çalışması Yapılacaktır.

Reklam

Kategoriler