PHP dizin işlemleri
PHP ile dizin işlemleri sayesinde yeni dizinler oluşturabilir, dizinleri taşıyabilir, yeniden adlandırabilir, silebilir ve içinde neler olduğunu gösterebiliriz.
Web tabanlı dosya yöneticisi gibi bir yazılım yapmak ya da dosya upload çalışmalarına girişmek için öğrenmemiz gereken konulardan bir tanesi olan dizin işlemleri sayesinde tüm dosya yönetimi olaylarına el atmış bulunuyoruz.
Dosya işlevlerinde olduğu gibi dizin işlemlerinde de çoğu çalışmayı fonksiyonlar ile yapacağız. Bir önceki derste anlattığım gibi dizin olayları için de izin ve yetkiye ihtiyacımız olacak.
PHP ile bir dizin oluşturmak
Yeni bir klasör oluşturmak şeklinde de değerlendirebileceğimiz bu olayı mkdir() fonksiyonu sayesinde gerçekleştiririz. Bir parametre ile çalışır, ama eğer istersen 2. parametre ile dosya CHMOD değerini belirtebilirsin.
mkdir('merhaba');
Yukarıdaki örneği çalıştırdığımızda çalıştırdığımız dizinin içerisinde merhaba adında yeni bir klasör oluşturmuş oluruz.
Eğer oluşturacağımız yeni dizinin CHMOD değerinide ifade etmek isteyecek olursak 2. parametreyi devreye sokuyoruz.
2. Parametreyi kullanmazsak varsayılan değeri “0777” yani tüm izinleri verilmiş durumda olur.
mkdir('yenidizin', '0655');
Bu örnekte de yenidizin adında bir dizin oluşturup 0655 CHMOD değeri vererek yazma iznini iptal etmiş olduk.
PHP ile bir dizini silmek
Varolan dizinleri silmek için rmdir() fonksiyonunu kullanırız. Bu fonksiyon ile sileceğimiz dizininin içerisi boş olmak zorundadır. Eğer dolu bir dizini bu şekilde silmeye kalkışırsak PHP kızıp hata gösterecektir.
Dolu bir dizini olduğu gibi silmek istiyorsak eğer, o zaman önce diğer dersde anlattığımız unlink() fonksiyonunu kullanarak tüm içeriği silmemiz gerekecek.
rmdir('merhaba');
Bu örnek çalıştığında merhaba adında bir dizin kalmamış olur.
PHP ile dizinlerin ya da dosyaların adını değiştirme ve taşıma
Aslında dizinlerin ya da dosyaların adını değiştirmek ile taşımak aynı şey diyebiliriz. Garip gelsede ismini değiştirdiğinizde aslında onu bir nevi taşımış olursunuz.
Bu işi rename() fonksiyonu ile gerçekleştireceğiz. İki parametre ile çalışan bu fonksiyonun ilk parametresine taşıyacağımız ya da değiştireceğimiz, dosya ya da dizin adın, ikinci parametreye ise taşıyacağımız yolu yazarız.
rename('eski', 'yeni');
Yukarıdaki örnek çalıştığında eski adında klasörü yeni adında değiştirir.
Aynı şekilde dizin yerine bir dosya uzantısı ve adı belirttiğimizde bu sefer değiştirme işini dosya üzerinde yapacaktır.
rename('resim.jpg', 'manzara.jpg');
Bu çalışmada da resim.jpg adındaki dosyamızın adını manzara.jpg olarak değiştirecektir.
Yine benzer şekilde ikinci parametrede farklı bir dizin belirttiğimizde dosyayı o dizine taşıyacaktır.
rename('resim/bir.jpg', 'manzaralar/resim.jpg');
Burada resim klasörü içindeki bir.jpg dosyasını manzaralar klasörüne taşıyıp adını resim.jpg olarak değiştirmiş olduk.
PHP ile dizin içerisindekileri okuma
Bir dizinin içerisinde bulunan tüm dosyaları listelemek için iki fonksiyona ve bir while döngüsüne ihtiyacımız var.
İlk olarak opendir() fonksiyonu ile aynı fopen() ile dosya açmadaki mantık gibi dizini açarız. Ardından dizini bağlantısını yüklediğimiz değişkeni readdir() fonksiyonu ve while döngüsü ile bağlayıp tüm dizinin içeriğine ulaşırız.
$dizin = opendir('dosyalar'); while($dosya = readdir($dizin)) { echo $dosya . ' <br/>'; }
Burada dikkatinizi çekecek mevzu while döngüsü içinde kullandığım koşul olabilir. Tek eşittir işareti kullandığımız bu koşulda amaç diğer koşullara göre farklıdır.
Bu özel yöntem sayesinde döngü tüm dizindeki dosyaları sayana kadar tek tek dönecektir.
Ekranda da dosyalar dizininin içeriğine göre dosya adları sırayla yazacaktır.
Örneğin içinde resim.jpg, dosya.rar ve müzik.mp3 dosyası olan dosyalar dizininde ekrandaki çıktı:
. .. resim.jpg dosya.rar müzik.mp3
Şeklinde olacaktır. Burada ilk çıkan . ve .. işaretleri bir alt dizini ve şuanki dizini ifade eder. İstersen o işaretleri bir if ifadesi ile saf dışı bırakıp sadece içeriğe ulaşabilirsin.
Bir sonraki PHP serüvenlerinde görüşmek üzere esen kalın.
Yazılanlar ilgini çektiyse, yenilerinden haberdar olmak için e-mail bültenine abone olabilirsin.
[…] PHP ile dizin işlevleri. […]
Sanırım o kadar anlatımın içinde başka bir dizindeki klasöre nasıl işlem yapacağımızı anlatan sizsiniz 😀 çok teşekkür ederim
[…] PHP değişkenleri, sabitleri ve dizinleri. […]
Saol Hocam Anlatım İÇin Ama Bunlar Heralde .ssh Yönetimi İle Yapılan Şeyler Değil mi ?
kodları göremiyorum dersleri nereden görebilirim
Çok güzel ve başarılı bir anlarım, teşekkür ederim. Sayenizde bir nebze de olsa bilgilerimi arttırdım …
Kolay gelsin çok başarılı bir anlatım olmuş tebrik ederim ben resim galerisi için her kategori için yeni dosya oluşturmayı başardım ancak tr karakter problemi oluşuyor dosya isimlerinde bunu nasıl çözümleyebilirim
bana php de dosya yöneticisi yapmak için acil yardım lazım cumrtesiye kadar çok az php -veritabanı bilgim var yardımcı olursanız sevnirim birinin bna yardım etmesi lazım acil cvp bekliyorum
Bu güzel ve yararlı çalışma için tekrar teşekkürler. Ben yeni bir dosya yada klasör oluşturduğumuzda dosya ya da klasörün hangi dizin altında oluştuğunu öğrenmek istiyorum. Pardus kullanıyorum. Tekrar teşekkürler.
getcwd fonksiyonu ile bulunduğunuz konumu alabilirsiniz
yazınız için teşekkürker. içeriğini listelemek istediğim klasör aynı ağda veya etki alanında başka bir bilgisayardaki paylaşıma açık bir klasör olabilir mi? olabiliyorsa, kodu nasıl yazabiliriz?
Klasör oluştururken türkçe karakter kullanamıyorum. ne yapmam lazım saygılar…
if ifadesi ile bağzı işaretleri yok etmeyi söylemişsiniz nasıl kullanılacak bu ifade