Banner

Etiket Arşivi: ‘php dosya dizin işŸlemleri’

Php dizin İşlemleri

PHP ile dizin işlemleri sayesinde yeni dizinler oluşturabilir, dizinleritaşı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 dosyaCHMOD değerini belirtebilirsin.

1
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.

1
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.

1
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.

1
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.

1
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.

1
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.

1
2
3
4
$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ı:

1
2
3
4
5
.
..
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.

Kaynak : https://www.phpr.org/php-dizin-islemleri/

Kategori Php
22.08.2016
623 Okunma

PHP dosya sistemi işlevleri

PHP’de dosya sistemi işlevleri sayesinde yeni dosyalar oluşturabilecek, olan dosyaları değiştirebilecek ya da silebileceğiz. Dosya yükleme ve indirme olaylarında da lazım olacak olan bir çok önemli fonksiyona da bu başlık altında değineceğiz.

Bu işlevler sayesinde tek bir PHP dosyası ile milyonlarca dosya oluşturup, silerek çok büyük bir iş yapmış hissi yaratıp ego tatmin edebilir ya da güzel bir dosya yönetimi, arşiv yönetimi, dosya menejeri gibi işe yarar uygulamalar yapabilirsin.

Şimdi bir dosyayı oluşturmak ile başlayıp, açıp, okuyup, yazıp, kapatıp, silmeyi öğreneceğiz.

Dosyalara yazma ve silme izinleri

Dosya oluşturma ya da silme gibi işlemlere girmeden önce tüm bunları yapabilmek için ihtiyacımız olan yetki ve izinlerden bahsetmek istiyorum.

PHP’de elimizi kolumuzu sallaya sallaya bir dizine ya da bir dosyaya müdahale edemeyiz. Önce bazı yetkilerimizin ya da dosyaların yazma izninin olması gerekir. Eğer lokalde kendi bilgisayarımız üzerinde çalışıyorsak varsayılan olarak izinler verilmiştir. Ama gerçek bir site hostunda güvenlik için kısıtlamalar vardır.

Çalışma yapacağımız dosyaya ya da dizine CHMOD denilen değiştirme modunu ayarlamamız gerekmektedir. CHMOD hakkında fazla detaya girmeden sadece bizim kullanacağımız kadarını anlatmak istiyorum.

Bir dosya ya da dizine, FTP ya da hostun yönetim paneli üzerinden yazma izni verebiliriz. Bu işi FTP’den yapmak için gerekli dosya ya da dizine sağ tıklayıp izin değerlerine “777” yazmamız yeterli.

CHMOD değerini 777 yaptığımız dosya ya da dizine tüm yazma, okuma ve silme izinleri vermiş oluruz. Ve bu noktada güvenlik olayına parmak basıyoruz. Malum tüm bu izinleri verince tedbirli olmak ve paronayak davranmak lazım. Sistemi kodlarken yapacaklarımıza ve yaptıklarımıza dikkatetmemiz gerekiyor.

PHP ile dosya oluşturmak

Olmayan dosyayı oluşturup, değiştirip, çalıştırmamız için touch() adında bir fonksiyon ile tanışacağız. Türkçe anlamı dokunmak olan bu fonksiyon PHP’de dosyalara ilk dokunuşu yapmaya ya da eğer dosya varsa son değişim tarihini değiştirmeye yarıyor.

Kullanımı basit, bir parametre ile çalışıyor. Parametresine oluşturulacak dosya adını giriyoruz.

1
touch('merhaba.txt');

Yukarıdaki kod çalıştığında kaynak PHP dosyasının olduğu dizinde merhaba.txt adında boş bir dosya oluşturur.

PHP ile dosyaları açmak ve kapatmak

Dosyaların içeriğini okuyup, değiştirip, silmeden önce onları PHP’de açmamız gerekiyor. Bu açma işlemi okumak anlamında anlaşılmasın. Gerekli işlemleri yapmaya başlamadan önce dosyaya ilk erişimi ve bağlantıyı sağlamak anlamında açmaktır.

Bu erişimi fopen() fonksiyonu ile yapacağız. Bu fonksiyon iki parametre ile çalışıyor. İlk parametrede erişeceğimiz dosyayı, ikinci parametrede ise dosyayı ne için eriştiğimizi belirtecek kipi giriyoruz.

Dosyalara ne için erişeceğimizi belirtmemizi belirtecek 8 tane kip var. Bu kipleri tabloda açıklamalarıyla yazalım:

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.

Şimdi bu yukarıdaki dosya kipleri ile istediğimiz dosyaya istediğimiz muameleyi görebiliriz.

Dosyalar ile gerekli işlemleri gerçekleştirdikten sonra onları kapatmayı unutmamalıyız. Eğer kapatmazsak bir sonraki dosyaya erişimimizde sorunlarla karşılaşabiliriz. Dosyaları kapatmak içinfclose() fonksiyonunu kullanacağız.

Bu fonksiyon bir parametre ile çalışır ve açtığımız dosyayı kapatır. Parametresine fopen ile açtığımız dosyanın değişkeni yazarız.

1
2
$dosya = fopen('merhaba.txt', 'r');
fclose($dosya);

Yukarıdaki örnekte merhaba.txt dosyasını okumak için açmış ve ilk erişimi sağlamış olduk ve hemen ardından da kapattık. Sadece erişimi sağlamak ile içeriğe ulaşdığımızı sanmayın. Bağlantıyı sağladıktan sonra diğer okuma ve yazma fonksiyonlarını kullanarak gerekli işlemleri gerçekleştireceğiz.

PHP ile dosyaların içeriğini okumak

Bu işlemi gerçekleştirmek için fopen()‘da r kipini, içeriğe ulaşmak için ise fread() fonksiyonu kullanacağız.

Bu fonksiyonun ilk parametresine önceden fopen ile açtığımız dosyanın değişkenini yazacağız. İkinci parametreye ise dosyadan kaç bayt okuyacağımızı belirteceğiz.

1
2
3
4
$dosya = fopen('merhaba.txt', 'r');
$icerik = fread($dosya, filesize('merhaba.txt'));
echo $icerik;
fclose($dosya);

Şuan eğer merhaba.txt dosyamızın içerisinde bir şeyler varsa ekranda aynen olduğu gibi yazacaktır. Eğer boş ise ekranda bir şey yazmayacaktır.

Dosyanın tüm içeriğini okumak istediğimiz için ikinci parametreye filesize() fonksiyonu ile dosyanın toplam boyutunu belirterek tüm içeriği almayı sağladık.

PHP ile dosyalara yazma

Dosya yazmak için w kipini ve fwrite() fonksiyonunu kullanacağız. Yanlız w kipini kullanırken eriştiğimiz dosyanın içeriği tamamen silinir ve yazacağımız değer ile değiştirilir.

Eğer daha önce var olan içerik kaybolmadan yazmak istiyorsan o zaman a kipini kullanman gerekecek.

Bu fonksiyonda iki parametre ile çalışıyor. İlk parametreye dosyaya fopen() ile eriştiğimiz değişkeni, ikinci parametreye ise yazılacak içeriği yazarız.

1
2
3
$dosya = fopen('merhaba.txt', 'w');
fwrite($dosya, 'Merhaba Dünya');
fclose($dosya);

Yukarıdaki örneği çalıştırdığımızda merhaba.txt adında dosyamızın içeriğine Merhaba Dünyayazmış olduk.

Bir başka örnek daha verelim:

1
2
3
4
5
6
7
8
for($sayi = 1; $sayi < 4; $sayi++) {
   $dosya_adi = 'Dosya' . $sayi . '.txt';
   touch($dosya_adi);
   
   $dosya = fopen($dosya_adi, 'w');
   fwrite($dosya, 'Bu ' . $sayi . '. dosyanın içeriği!');
   fclose($dosya);
}

Bu örnekte tam 3 tane txt dosyası (Dosya1.txt, Dosya2.txt, Dosya3.txt) oluşturup her birinin içerisine “Bu 1. dosyanın içeriği” şeklinde içerik eklemiş olduk.

PHP ile dosyaları silme

Dosya oluşturma fonksiyonunun zıttı olarak göreceğimiz unlink() fonksiyonu ile istediğiniz dosyayı yok edebilirsiniz.

Kullanımı oluşturma fonksiyonu gibi basit ve tek parametreli.

1
unlink('merhaba.txt');

Diğer örneklerde üzerinde çalıştığımız merhaba.txt dosyasını siler.

PHP’de dosyaların varlığını kontrol etmek

Dosyaların varlığından haberdar olmak, eğer varsa değiştirmek yoksa oluşturmak gibi işlemler yapmak için file_exists fonksiyonunu kullanacağız.

Parametresine gireceğimiz dosya adında bir dosya mevcut ise TRUE değil ise FALSE dönecektir. Hemen örnek ile gösterelim:

1
2
3
4
5
if(file_exists('merhaba.txt')) {
   echo 'Dosyamız var';
} else {
   echo 'Dosyamız yok';
}

Bir önceki konuda merhaba.txt dosyasını sildiğimiz için ekranda Dosyamız yok yazacaktır.

Bir sonraki PHP serüvenlerinde görüşmek üzere hoşçakalın.

Kaynak : https://www.phpr.org/php-dosya-sistemi-islevleri/

Kategori Php
22.08.2016
602 Okunma