Her dilde olduğu gibi PHP de de dosya dizin işlemleri için özel kütüphaneler, fonksiyonlar mevcut. İşte bu fonksiyonları kullanarak nasıl dosya dizin oluşturulur, silinir, düzenlenir bunları bu yazıda göstermeye çalışacağız.
Bu konuya geçmeden dosya dizin izin ve yetkilerinden kısaca bahsedelim. Güvenlik açısından bir önlem olan dosya izinleri genelde uzak sunucuya bağlandığımızda karşımıza çıkar. PHP Linux işletim sistemlerinde çalıştığı için FTPden veya yönetim panelinden CHMOD 777 vererek o dosyada okuma yazma silme işlemlerinin hepsini açmış oluruz. burada 777 user group other a sırasıyla read write execute izinleri için 111 111 111 anlamına gelir. mesela 755 ise 111 101 101 olarak 2 lik tabana çevirdiğimizde usera oku yaz çalıştır izinleri verirken, group ve othera oku ve çalıştır izninleri verir.
touch('dosya.txt');
fonksiyonu ile dosyayı sıfırdan oluşturabiliriz.
Dosyayı ilk olarak açmamız gerekiyor ve bunun için fopen fonksiyonunu kullanıyoruz. fopen parametre olarak ilk dosya adı sonra dosyayı ne için açtığımızı belirten kipi alıyor. 8 tane kip var bunlar:
$file = fopen('dosya.txt', 'r');
fclose($file);
fopen r kipi ile açtığımız dosyanın içeriğini okumak için fread kullanırız. fread’in ikinci parametresi ne kadarlık okuma yapılacağını belirtmemizi sağlar.
$file = fopen('dosya.txt', 'r');
$icerik = fread($file, filesize('dosya.txt'));
echo $icerik;
fclose($file);
fopen w+ kullanarak ekleme yapmak için açıyorduk. fwrite ile de ekleme yapıyoruz.
$file = fopen('dosya.txt', 'w+');
fwrite($file, 'Merhaba Dünya');
fclose($file);
Bunun için ise unlink fonksiyonunu kallanıyoruz.
unlink('dosya.txt');
file_exists fonksiyonunu bu iş için kullanıyoruz. Parametresine girilen dosya var ise TRUE yok ise FALSE döner.
Dizin oluşturmak için mkdir kullanılır ve ikinci parametre CHMOD izinleri için girilebilir ama tek parametre ile de çalışır bu fonksiyon.
mkdir('dizin','0777');
Sadece Boş dizinleri silmek için kullanılabilir olan rmdir fonksiyonu bulunuyor. Dolu dizinleri silmek için önce yukarda anlatılan unlink kullanılır.
rmdir('dizin');
Bu işlemler için tek bir fonksiyon mevcut. O da rename. Dosyalarda da dizinlerde de kullanılabir. Taşıma işleminde ilk parametre olarak eski yeri, ikinci parametre olarak taşınacak yeri veririz.
rename('dizineski/dosyaeski.jpg', 'dizinyeni/dosyayeni.jpg');
opendir ile dizini açar ardınadan readdir ile while döngüsü yaratıp tek tek tüm dosyalara erişiriz.
$dir = opendir('dizin');
while($file = readdir($dir)) {
echo $file;
}