Merhaba arkadaşlar mobilhanem.com için hazırladığımız php derslerimizde bu ders Dosya ve Klasör işlemlerine başlangıç yapacağız. Öncelikle klasör işlemlerinden başlayalım. Klasör işlemlerinde önemli olan klasörün dosya sisteminde nerede olduğudur. Bir klasörün yerini belirlemek için absolute path ve relative path olmak üzere iki yöntem vardır.
Absolute Path
Absolute path yönteminde klasörün dosya sistemindeki tam yolu kullanılır.
Örneğin:
C:\wamp\www\mobilhanem C:\wamp\www\mobilhanem\dersler http://mobilhanem.com/wp-content/ http://mobilhanem.com/wp-content/plugin
Biz mobilhanem klasöründeysek dersler klasörüne gideceksek absolute path yöntemi ile C:\wamp\www\mobilhanem\dersler şeklinde erişiriz.
Relative Path
Relative pathda ise bir klasörün bizim içinde bulunduğumuz klasöre göre konumu kullanılır.
Örneğin şöyle bir dosya sistemi yapımız olsun.
C:\wamp\www\mobilhanem C:\wamp\www\mobilhanem\dersler C:\wamp\www\mobilhanem\deneme C:\wamp\www\mobilhanem\aaa
Biz mobilhanem klasöründeysek dersler klasörüne gitmek için relative path yöntemi ile dersler/ şeklinde gideriz.
Php Klasörler İçinde Gezinmek
Klasörler içerisinde gezinmek neredeyse bütün programlama dillerinde aynıdır. Genellikle mevcut bir klasörün içerisindeysek relative path, mevcut bir klasörde değil isek absolute path kullanırız.
- Önceki klasöre gitmek için ../
- iki önceki klasöre gitmek için ../../
- Bulunduğumuz klasör ./
- Sonraki klasörler ./a/b yada a/b
Şimdiye kadar verdiğimiz bilgiler dosya sistemiyle alakalı genel bilgilerdi arkadaşlar.
Php Klasör Oluşturma
Php de klasör oluşturmak için mkdir() fonksiyonu kullanılır.
mkdir(‘klasör adı’,CHMOD); Chmod değeri klasör üzerinde yetkilendirme yapar chmod değeri olmadan sadece klasör adını yazarakta klasör oluşturabiliriz.
Chmod değerlerinden bu dersimizde bahsetmeyeceğimden chmod değerini kullanmayacağız.
Örnek:
<?php $olustur = mkdir("mobilhanem"); if($olustur) echo "Klasör Oluşturuldu."; else echo "Klasör Oluşturulamadı"; ?>
Kodumuzu yazdıp çalıştırdığımızda index.php dosyamızın bulunduğu kısımda bir mobilhanem klasörü oluşacaktır.
Kodu iki kez çalıştırırsak bu klasör zaten var hatası alacağız. Bunun için dosya varmı yokmu kontrolü yapmamız gerekir.
file_exist(“PATH”) fonksiyonu verilen pathte dosya veya klasör var ise geriye ture, yok ise false döndüren bir boolean fonksiyondur.
Örnek:
$klasorYol = "mobilhanem"; if(!file_exists($klasorYol)) { $olustur = mkdir("mobilhanem"); if($olustur) echo "Klasör Oluşturuldu."; else echo "Klasör Oluşturulamadı"; }else { echo "Bu Klasör Zaten Var !"; }
Php Dosya Veya Klasör Taşıma – İsim Değiştirme
Dosya veya klasör taşıma işlemi için taşınacak klasörün var olup olmadığı kontrolünü yapmanız her zaman gerekir. Örneğin:
$klasorYol = "mobilhanem"; $yeniKlasorYol = "ders/mobilhanem"; if(file_exists($yeniKlasorYol)) { $tasi = rename($klasorYol,$yeniKlasorYol); if($tasi) echo "Klasör Taşındı."; else echo "Klasör Taşınamadı."; }else { echo "$yeniKlasorYol Konumu Bulunamadı."; }
Dosya adı değiştirme örneği:
$klasorYol = "mobilhanem"; if(rename($klasorYol,"mobilhanem2")) { echo "Klasör Adı Değiştirildi"; }else { echo "İsim Değiştirilemedi."; }
Php Klasör Silme
rmdir fonksiyonu ile klasörü silebiliriz. Klasörü silmek için klasörün içerisini boş olmak zorundadır. Aksi takdirde klasör silinmez ve hata mesajı alırız.
örnek:
if(rmdir("mobilhanem2")) { echo "Klasör Silindi"; }else { echo "Klasör Silinemedi."; }
Php Klasör içerisindeki dosya ve klasörleri listeleme
dosya ve klasörleri listelemek için opendir ve readdir fonksiyonlarını kullanırız.
opendir(PATH) verilen pathteki klasörü açar. geriye içeriği döndürür.
readdir() opendir fonksiyonundan gelen içeriği alır ve okur.
Örneğin: Bulunduğumuz klasörün içeriğini listeleyelim.
$ac = opendir("./"); // bulunduğumuz klasörü açsın while($veri = readdir($ac)) echo $veri."<br/>";
Burada ilk çıkan . ve .. işaretleri bir alt dizini ve şuanki dizini ifade eder.
Bir verinin dosyamı klasör mü olduğunu öğrenmek için is_file() fonksiyonunu kullanırız.
is_file(PATH) verilen path deki verinin dosya mı klasör mü olduğuna bakar dosya ise true döndürür.
Yukarıdaki örneğimizde klasörlerin yanına klasör dosyaların yanına dosya yazalım.
$ac = opendir("./"); // bulunduğumuz klasörü açsın while($veri = readdir($ac)) { $tip = is_file($veri) ? "(Dosya)" : "(Klasör)"; echo "$veri $tip <br/>"; }
Php Dosya Oluşturma
Phpde touch() fonksiyonu ile dosya olutşrurulur.
touch(DOSYA_ADI) parametre olarak dosya adını alır ve dosya oluşturulursa geriye true değeri döner.
örneğin mobilhanem.txt dosyasını oluşturalım.
if(touch("mobilhanem.txt")) echo "Dosya Oluşturuldu"; else echo "Dosya Oluşturulamadı";
Php ile Dosya Açmak
Phpde dosya içeriğini açmanın bazı seçenekleri vardır. değiştirmek için açmak, sonuna eklemek için açmak gibi gibi. Bu özellikleri aşağıdaki tabloda görebilirsiniz.
Kip | Açıklaması |
r | Dosyayı okumak için açar. (read) |
r+ | Dosyayı hem okumak hem de yazmak için açar. (read) |
w | Dosyayı yazmak için açar. Var olan içeriği siler (write) |
w+ | Dosyayı hem yazmak hem de okumak için açar. Var olan içeriği siler, baştan yazar. (write) |
a | Dosyayı yazmak için açar. Var olan içeriği silmez sonuna ekler. (append) |
a+ | Dosyayı hem yazmak hem de okumak için açar. Var olan içeriği silmez sonuna ekler. (append) |
x | Dosyayı oluşturur ve yazmak için açar. Eğer dosya zaten varsa FALSE döner. |
x+ | Dosyayı oluşturur, yazmak ve okumak için açar. Eğer dosya zaten varsa FALSE döner. |
Php de dosyayı fopen ile açarız.
fopen() iki parametre alır. Birinci parametre dosya yolu ikinci parametre ise yukarıdaki tablodaki kiplerden biridir.
fopen() tek başına bir işe yaramaz sadece dosya ile bağlantı kurar. Şimdi fopen fonksiyonunu işe yarar bir hale getirelim.
fwrite(ACMA_DEGISKENI,VERI ) fwrite dosyaya veri yazar. İki parametre alır. Birinci parametre dosya açma yani fopen fonksiyonu, ikinci değişken ise yazacağın veridir.
fclose(ACMA_DEGISKENI) Açılan bir dosyayı kapatır. parametre olarakta fopen fonksiyonunun değişkenini alır.
Örneğin: mobilhanem.txt dosyasına mobilhanem.com yazıp kaydedelim.
<?php $ac = fopen("mobilhanem.txt","a+"); fwrite($ac,"mobilhanem.com"); fclose($ac); ?>
Dosya içerğine bakarsak mobilhanem.com yazdığını görürüz.
Şimdide dosya içeriğini okuyalım.
fread(OPEN, BAYT) fopen fonksiyonu ile dosya okuruz. Parametre olarak dosya open bağlantısı ve kaç bayt okunacağını alır. geriyede veriyi döndürür.
filesize($dosya) parametre olarak aldığı dosyanın boyutunu döndürür.
<?php $ac = fopen("mobilhanem.txt","r"); $icerik = fread($ac, filesize('mobilhanem.txt')); echo $icerik; fclose($ac); ?>
Evet arkadaşlar genel olarak dosya sisteminden dosya ve klasör işlemlerinden bahsettik ve bir dersimizin daha sonuna geldik. Bir sonraki dersimiz olan Php Dersleri – Temel String Fonksiyonları dersimizde görüşürüz.
Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı yine konu altından ve Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm php dersleri için tıklayınız..
55
Merhaba, Ben ben bir tablo oluşturdum.. şimdi tablonun “proje_ismi” klasorunu su sekılde belırlemek ıstıyorum:
Proje ismi = bir klasorun ıcerısındekı bulunan (her bır klasor bır proje) her klasorun ısmı benım tabloma proje ısmı olarak dusmesını ıstıyorum.. klasorumu sılersem benım tablomdan sılınecek yenı proje eklersem tabloma eklenecek. Bunu nasıl yapabılırım…
(çalışmalarımı localhostta yapıyorum)
merhaba tablodan kastın veri tabanı tablosuysa sürekli filesystemi dinlemen gerekir. Ama normal bir html tablosunda görmek istiyorsan glob fonksiyonunu kullanarak klasörleri tabloya yazdırabilirsin.
tam olarak soyle… html de tablo olusturdum.. veri tabanından verileri alıyor su anda… html de proje ısmı adında bır sutun var… Su anda databaseden manuel olarak gırıs yapabılıyorum.. ama bu manuel gırısı:
Benim istediğim :
bilgisayarın C:\xampp\htdocs\deneme (deneme tablomun olduug klasor.)
Buraya projeler adından bir klasor olusturacagım:
Sonra bu klasorun altına yenı klasorler eklemeye baslayacagım her klasor bır proje ısmı olacak sekılde.
buraya ekleyecegım her klasor ısmı verı tabanına gıderek bır proje ısmı olarak acılacak.. klasoru sıldıgımde ıse verı tabanından proje sılınmıs olacak..
Sonuc:
Her klasor ekledıgımde verı tabanında bır satır olusturulacak o klasor adıda proje_ismi sutununa gelecek.
Klasoru sıldıgım zaman ıse html de proje sılınecek
https://www.youtube.com/watch?v=jxHU2dgVcPo
Burada bir klasordekı dosyaları drowpdown olarak yapmıs mesela..
Ben klasordekı klasorlerı tablo satırı olarak cekmek ıstıyorum
bu işlemleri tersten yapman daha mantıklı olur senin için. şuan söylediğin şekilde yaparsan filesystemi sürekli dinlemen gerekir buda php için istenmeyen bir durum node js falan kullanabilirsen dediğin şekilde yapabilirsin. benim sana tavsiyem verileri direk veri tabanına ekle veri tabanına eklerkende filesystemde klasör oluştur. bu şekilde sürekli filesystemi dinlemek zorunda kalmazsın.
Amacın sadece klasörleri listelemek ise veri tabanı kullanmana gerek yok glob fonksiyonun kullanarak direk klasörleri listeleyebilirsin.
https://www.webslesson.info/2017/07/php-filesystem-with-ajax-jquery.html
adam ıstedıgım seyı eksıksız yapmıs neredeyse.
Yinede ilgin için teşekkürler
txt dosyasına html sayfasından post ederek yazdırıyorum..bu yazma işlemi her post ettiğimde sayfanın en üstüne yazdıracak.yani her post edilen cümle sayfanın üstünde ondan önce post edilenler hep altta kalacak..tıpkı whatsapp iletisindeki gibi..teşekkürler.
Formadan gönderilen veri ile bir dosya oluşturuyoruz ama bu dosyanın ismini değişkenden alsın uzantısı da php yapsın istiyorum. Bunu touch() fonksiyonu ile yapıyorum ama dosya ismini değişkenden aldığı için uzantı ekleyemiyorum… Nasıl yapabilirim?
Teşekkürler..
Bilgi için teşekkürler.