Dizin Yönetimi: Klasör Oluşturma, Listeleme ve Silme

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
Web projeleri büyüdükçe dosyaları tek bir klasörde tutmak imkansız hale gelir. PHP, sunucu üzerinde dinamik olarak klasörler oluşturmanıza, bu klasörlerin içeriğini taramanıza ve ihtiyaç duyulmadığında onları temizlemenize olanak tanır.

1. Yeni Dizin Oluşturma (mkdir)​


mkdir() fonksiyonu, belirtilen isimde bir klasör oluşturur. Klasör oluştururken izinleri (0755 gibi) ve iç içe klasör yapısını (recursive) belirtmek önemlidir.

PHP:
<?php
$klasor_adi = "uploads/user_12";

// Klasör yoksa oluştur
if (!file_exists($klasor_adi)) {
// 0755: Standart yazma/okuma izni
// true: İç içe klasörleri (uploads varsa içine user_12) otomatik oluşturur
if (mkdir($klasor_adi, 0755, true)) {
echo "Dizin başarıyla oluşturuldu.";
} else {
echo "Dizin oluşturulamadı!";
}
} else {
echo "Bu isimde bir dizin zaten mevcut.";
}
?>

2. Dizin İçeriğini Listeleme (scandir)​


Bir klasörün içinde hangi dosyaların olduğunu görmek için scandir() kullanılır. Bu fonksiyon, içerideki tüm dosya ve alt klasör isimlerini bir dizi (array) olarak döndürür.

PHP:
$dizin = "uploads/";
$dosyalar = scandir($dizin);

echo "<h3>Klasör İçeriği:</h3><ul>";
foreach ($dosyalar as $dosya) {
// "." (mevcut dizin) ve ".." (üst dizin) gizli nesnelerini filtrele
if ($dosya != "." && $dosya != "..") {
echo "<li>" . $dosya . "</li>";
}
}
echo "</ul>";

3. Dizin Silme (rmdir)​


rmdir() fonksiyonu bir dizini siler. Ancak çok önemli bir kural vardır: Silinecek dizinin içi tamamen boş olmalıdır.

PHP:
$silinecek_dizin = "temp_data";

if (is_dir($silinecek_dizin)) {
if (rmdir($silinecek_dizin)) {
echo "Klasör başarıyla silindi.";
} else {
echo "Hata: Klasör boş olmayabilir veya izin hatası var.";
}
}
?>

Dizin Yönetimi Fonksiyonları Tablosu​


FonksiyonGöreviÖnemli Not
file_exists()Dizin/Dosya var mı kontrol eder.Hata almamak için işlem öncesi mutlaka kullanın.
is_dir()Nesnenin bir klasör olup olmadığına bakar.Dosyaları klasör sanmamak için gereklidir.
getcwd()Mevcut çalışma dizinini verir.Sunucu yolunu (Path) bulmak için kullanılır.
rename()Klasör adını değiştirir.Aynı zamanda klasörü taşımak için de kullanılır.

4. Profesyonel İpucu: İçerik Doluyken Silme​


Eğer içi dolu bir klasörü tamamen silmek istiyorsanız, önce içindeki tüm dosyaları unlink() ile silen bir döngü yazmanız veya aşağıdaki gibi öz yinelemeli (recursive) bir fonksiyon kullanmanız gerekir:

PHP:
function diziniSil($yol) {
if (!is_dir($yol)) return;
$nesneler = scandir($yol);
foreach ($nesneler as $nesne) {
if ($nesne != "." && $nesne != "..") {
if (is_dir($yol."/".$nesne))
diziniSil($yol."/".$nesne);
else
unlink($yol."/".$nesne);
}
}
rmdir($yol);
}

Sonuç​


Dizin yönetimi, sunucu kaynaklarını düzenli tutmak için hayati önem taşır. Klasör oluştururken 0755 iznini kullanmak güvenli bir standarttır; 0777 izni ise zorunlu kalmadıkça (güvenlik açığı yaratabileceği için) verilmemelidir. Her zaman işlem yapmadan önce file_exists() ile kontrol yapmayı alışkanlık haline getirin.
 
Geri
Üst