Dosya(file)
işlemleri, programlama açısından son derece önemlidir. Söz konusu programlama
dili web tabanlı ise, bu önem daha da artmaktadır. Çünkü web tabanlı sistemler,
kullanıcı odaklıdır ve dosya transfer trafiği oldukça fazladır. Bu sebeple
dosyalarla ilgili işlemler için çok çeşitli ve güçlü bir kütüphane bulunması
gerekmektedir. Bu yazıda PHP dilini bu kütüphanesine ve dosya işlemlerine
değineceğiz.
include()
Komutu
Harici
bir dosyayı, başka bir dosya içinde çalıştırmak üzere çağırmak amaçlı
kullanılan fonksiyondur. include() komutu
ciddi ve büyük sistemler üzerinde yapılan çalışmalarda, mükemmel bir kolaylık
ve dinamizm kazandırmaktadır. En önemli etkilerinden biri, sayfaların güncellenmesi
sırasında gözlemlenebilir. Örneğin bir sayfanın yazı tipinde değişme yapılacak
ise, include edilen sayfadaki değişim, bu dosyanın include edildiği tüm
sayfalarda etkisini gösterecek ve böylece her sayfanın tek tek güncellenmesi
işleminin zahmetinden kurtulmuş olunacaktır.
Bir
internet sayfasının içinde HTML, JavaScript, CSS, PHP, SQL, ASP gibi birçok
kodlama bulunabilir. Bu da kod yığını demektir ki çok sıradan bir internet
sitesinin bile kaynak kodları incelendiğinde yüzlerce satır koddan oluştuğu
rahatlıkla görülebilir. Durum böyle iken include()
komutu daha da önem kazanmaktadır.
Çağırılmak
istenen dosyalar genelde .inc formatında dosyalar olur ve sayfanın kendisinde
yazılacak bilgilerin aslı, bu dosyada aynen mevcut olmak zorundadır.
Dikkat
edilmesi gereken konu, include() yöntemiyle entegre edilen dosyanın içinde PHP
kodlaması yapılması gerekiyorsa, <?php ?> etiketleri arasına, ASP
yapılması gerekiyor ise de <% %> etiketleri arasına yazılmasına dikkat
edilmesidir. Yani, hangi programlama dili ise kurallara uygun şekilde yazılma
zorunluluğu vardır. include() komutunun görevinin, kod yığını oluşmasına engel
olmak ve sistematik bir kod düzeni oluşturmak olduğu unutulmamalıdır.
Aşağıdaki
kodları css.inc dosya adıyla kaydedelim.
css.inc
<style
type="text/css">
<!--
A.style4
{
font-size: 12px;
font-family: Arial, tahoma;
text-decoration:none;
color: #0F4297;
}
A.style4:hover
{
font-size: 12px;
font-family: Arial, tahoma;
text-decoration:underline;
color: #000000;
}
.style5
{font-size: 12}
-->
</style>
Yukarıda
görülen kodlar, tipik bir css formatlı CSS dosyasıdır.
Aşağıdaki
kodları meta.inc dosya adıyla kaydedelim.
meta.inc
<meta
http-equiv="Content-Type" content="text/html;
charset=iso-8859-9">
<meta
name="keywords" content="Php, Asp, Html, Css, Mysql, Sql,
Javascript, xml, ajax"/>
Aşağıdaki
dosyayı index.php olarak kaydedelim.
index.php
<html>
<head>
<title>Phpservisi.com
| AÇIK KAYNAK KOD PLATFORMU
</title>
<?php
include("css.inc"); ?>
<?php
include("meta.inc"); ?>
</head>
<body>
<!--
Site İçerik-->
</body>
</html>
Görüldüğü
gibi bir internet sayfası ve içerisinde include() yöntemi uygulanmaktadır.
meta.inc
ya da css.inc dosyalarında yapılan değişiklik, otomatik olarak index.php
sayfasında da etki edecektir. Böylece bir yerde yapılan güncelleme, bütün
sisteme entegre olmaktadır.
include() İfadesini Koşullu
Kontrol Yapıları İçinde Kullanmak
include()
deyiminin harici bir dosyayı, diğer bir dosya içinde çağırmak işleminde
kullanıldığına değinmiştik. Fakat bu çağırma işleminin bazen belirli koşullar
oluştuktan sonra olması istenebilir.
Örneğin,
sadece log-in işlemi gerçekleştikten sonra görüntülenebilecek bir sayfa
olduğunu farz edelim. session(oturum) açıldığında include işlemi başlasın
isteyelim.
Oturum
açma koşuluna göre çağırılan dosya
<?php
session_start(); ?>
<?php
//Deneme
oturumu açılış değeri true(1) ise
if(session_is_registered("deneme")==1)
{
include("islem.php");
//Kriter->islem.php dosyasının include edilmesi
}
?>
Yukarıdaki
uygulama, oturum açılma işlemi gerçekleşmesi koşulunda, islem.php isimli
dosyayı include ifadesi ile çağırma işlemini göstermektedir.
include_path() Yönergesi
Hazırlanan
büyük çaplı bir projenin, dosyalarını taşımak ya da başka bir bölüme kaldırmak
gerekebilir. Bu durumda, program içinde include ile çağırılan belki de binlerce
dosyanın da yol adresi değişmiş olacaktır. Bu durumda sıfırdan kod yazmaktan
daha zahmetli bir iş karşımıza çıkacaktır.
Durum
böyle iken include_path yöntemi kullanılarak fayda sağlanabilir.
php.ini dosyasının include_path yönergesi
ayarlanarak bu zarar giderilmiş olur.
include_path()
yönergesi
include_path
.:/users/phpservisi/htdocs/phpservisicom/lib/
include_once() İfadesi
include()
ifadesinin sistem tasarlarken ne kadar büyük bir yoğunluktan kurtardığından
bahsetmiştik. include() komutu kodlama içinde binlerce kez kullanılmış
olabilir. Bu durumda aynı dosyayı çağıran iki include() ifadesi gözden kaçarak
üst üste kullanılmış da olabilir. Durum böyle olunca include işlemi
gerçekleşilen dosya iki defa çağırılıp yazdırılacaktır. Bu işlem bir hatadır.
Bu hatadan kurtulmak için include_once()
fonksiyonu oluşturulmuştur. Karmaşık bir programlama oluştururken include()
ifadesi yerine include_once() fonksiyonu kullanmak bu sorunu giderecektir.
Dosya Üzerinde İşlemler
Dosya
işlemleri çok büyük önem taşımaktadır. Çünkü yapılan herşey, aslında kodlardan
oluşmaktadır ve kodlar da dosyaların içinde yer almaktadır. Böyle bir durum söz
konusuyken dosyaların durumları ve işlevleri hakkında, programcının bilgisi edinebilecek
bir sistem gereklidir.
Dosyalar
ile ilgili olarak şu maddeleri sıralayabiliriz:
- Dosya
bilgileri,
- Dosya
yaratmak ve yok etmek,
- Dosya
üzerinde işlem yapmak (yazmak, temizlemek, okumak),
- Dosya
üzerinde yapılabilecek diğer işlemler,
- Dosya
yükleme işlemleri,
- Dizin
İşlemleri
Dosyalara Ait Bilgileri Edinme Yöntem ve
Fonksiyonları : is_readable(), is_executable(), is_writeable()
Dosyalara
ait bilgiler, oldukça önemli bir konudur. Zira dosyalar olmasa sistemler
oluşamazdı. Örneğin bir arkadaşlık portalında, bir kullanıcı profil resmini
değiştirmek istediğinde bir resim yüklemesi gerekmektedir. Eklediği resim
server üzerinde bir dosya(klasör) içine konmaktadır. Eklenen bu resmin, o dosya
içine yüklenebilmesi için o dosyanın yazılabilir olması gerekmektedir(chmod
777). Bütün bunların gerçekleşebilmesi için birtakım fonksiyonlar
kullanılmaktadır. Bu bölümde bu fonksiyonlar üzerinde duracağız.
is_readable();
Fonksiyon
adından da belli olduğu üzere, is_readable fonksiyonu, bir dosyanın okunurluğu
üzerinde araştırma yapar.
is_readable()
yapısı
if(is_readable("deneme.txt"))
{
//okunabilir olduktan sonra
yapılması istenen kriter.
}
is_executable();
is_executetable()
fonksiyonu varolan dosyayı, server (sunucu) özellikleri doğrultusunda dosya
izinlerine ya da dosyanın uzantısına bağlı olarak çalışıp çalışmayacağını
araştırır ve sonucu Boolean olarak döndürür.
is_writable();
is_writable()
fonksiyonu, yine adında görüldüğü gibi, bir dosyanın yazılabilir olup olmadığı
hakkında bilgi vermektedir. Unix alt yapılı sistemde, dosyayı görebiliriz fakat
üzerinde işlem yapmak için bazı hakların önceden tanınmış olması gerekmektedir (
CHMOD ).
İrdeleme
Köşesi
Chmod
ifadesi, doğrudan PHP ile alakalı değildir. Unix tabanlı sistemler için geçerli
bir ifadedir. PHP programlama dili de unix tabanlı bir yazılım dili olduğundan
dolayı CHMOD ifadesine değinmenin yararlı olabileceğini söyleyebiliriz
CHMOD
kelimesi ingilizce "change mode" kelimelerinin harflerinin uyarlanmasından
meydana gelmiştir. Türkçe "türünü değiştirme" anlamına gelir. Sonraki
konularda geniş olarak detay gösterilecektir.
Dosya Oluşturmak ve Silmek İşlemleri : touch(), unlink()
Bir
dosya oluşturmak için server içine girmek gerekmez. Kodlarla oluşturmak
mümkündür. touch() fonksiyonu bu
amaçla oluşturulmuştur. Oluşturulmak istenen dosya adıyla kayıtlı başka bir
dosya varsa hata alınmaz. Fakat bu dosyanın oluşturulma tarihi güncellenmiş
olur.
Var
olan bir dosya silinmek istenirse, yapılacak işlem touch() dosya oluşturma
fonksiyonunda yapılanlarla aynı paralelde olacaktır. unlink() fonksiyonu dosyayı silmeyi sağlar.
unlink()
fonksiyon gösterimi
touch(“ornekler/ornek1.php”);
unlink(“ornekler/ornek1.php”);
//
ornekler klasörü altında ornek1.php isimli dosya silindi.
Dosyalara Yazma, Ekleme ve Okuma
İşlemleri : fopen()
Son
yıllarda fazlasıyla gelişen internet teknolojileri, eskiden olduğu gibi sunucu
taraflı değil kullanıcı taraflı bilgilere ihtiyaç duymaktadır. On sene önceki
bir dönemden bahsedersek, internet sitelerinde yayınlanan bilgiler yeterliydi.
Fakat hızla gelişen bu internet çağında, kullanıcıların yayınladığı bilgiler
daha önem arz etti. Bundan dolayı PHP, ASP, JSP, ASP.NET gibi programlama
dillerinin önemi arttı. Zira bu yazılım dilleri web tabanlı dillerdi ve
verileri depolamak için köprü vazifesi görüyorlardı.
Verilerin
depolandığı yerler veritabanları ya da dosyalardır. Veritabanları( MYSQL, Access,
Oracle, vs.) büyük kapsamlı olmaları açısından önemlidir fakat bunlardan önce,
veri depolama başlığı altında gösterilebilecek en küçük kapsamlı olan, dosyalar üzerinde işlemler konusuna
değinmek gerekmektedir.
Dosyalara Yazmak :
fopen(), fwrite(), fputs()
Metin
dosyalarına yazma işlemi yapmak çok gelişmiş bir yöntemdir. Bu yöntem içinde değişik parametreler vardır.
Uygulanan bu parametrelerin her biri farklı görevler üstlenir.
Dosya İşlem Parametreleri
Parametre
|
Komut
|
r
|
Dosya okumak için kullanılır.
|
r+
|
Dosya okumak ve yazmak için kullanılır.
|
w
|
Dosya yazmak için kullanılır. Dosya yoksa
yaratır. Varsa günceller.
|
w+
|
w komutu ile aynıdır. Ayrıca dosyaları
okuyabilir.
|
a
|
Dosya okumak için kullanılır. Dosya yoksa
yaratır. Varsa dosya içeriğine eklenti yapar.
|
a+
|
a komutu ile aynıdır. Ayrıca dosyaları
yazabilir.
|
Bir
dosya üzerinde işlem yapabilmek için o dosyayı açmak gerekir. Bunun için fopen() fonksiyonuna ihtiyaç
duyulacaktır.
Dosya’yı
Okumak
$dosya_oku
= fopen(“deneme.inc”, “r”);
Dosya’yı
Yazmak
$dosya_yaz
= fopen(“deneme.inc”, “w”);
Dosya’yı
Eklemek
$dosya_oku
= fopen(“deneme.inc”, “r”);
Dosyalardan Okumak
: fopen(), fgets(), feof(), readfile()
Bir
dosyayı okumak demek o dosyaya tam erişim ile mümkündür. Bunu sağlayan
fonksiyon ise fgets() fonksiyonudur.
fgets()
kullanımı
$dosya_oku
= fopen(“deneme.txt”,”r”);
$dosya_erisim
= fgets($dosya_oku, 1024);
Bu
kodlamaya bakıldığında 1024 ifadesi karşımıza çıkmaktadır. Bunun anlamı 1024
byte veridir. Dosya açılacağı için belirli bir miktar belirtilmelidir. fgtes()
fonksiyonuyla okunan dosyanın içerisinde satırlar mevcut olacaktır.
Bu
satırlar sonlandığı zaman bunu bildirmesi gereken bir fonksiyon gerekir ki bu
da feof() fonksiyonudur. Satır
sonuna ulaşıldığında TRUE ya da FALSE değerler döndürür.
feof()
kullanımı
<?php
$dosya_oku
= fopen(“deneme.txt”,”r”);
$dosya_erisim
= fgets($dosya_oku, 1024);
feof($dosya_erisim);
?>
Dosya
içeriğini okumak için farklı yollar vardır. PHP kütüphanesi bu açıdan oldukça
geniştir. Şimdi Bir text dosyası yaratalım ve içeriğini ekrana yazdıralım.
deneme.txt
adında bir text dosyası oluşturalım:
deneme.txt dosyası |
Oluşturduğumuz
bu dosyayı ekrana yazdırmak için bir php programı yazmamız gerekmektedir.
Dosya okuma
<?php
$dosya
= "deneme.txt";
$sonuc
= file($dosya);
foreach($sonuc
as $inceleme) {
echo $inceleme;
}
?>
Yukarıdaki
uygulama çalıştırılıp ekran görüntüsü alındığında, deneme.txt dosyasındaki içerik görülecektir.
dosyaokuma.php dosyası ekran görüntüsü |
Yukarıdaki
uygulama, oluşturulan bir text dosyasının içeriğini okuma işlemini
göstermektedir. PHP programlama dilinin bu açıdan çok geniş bir kod
kütüphanesine sahip olduğuna değinmiştik. Yukarıda yapılan işlem farklı
metodlarla da yapılabilmektedir.
Dosya okuma
<?php
$dosya
= "deneme.txt";
readfile($dosya);
?>
Yukarıdaki
program çalıştırılırsa, yukarıdaki görüntü elde edilecektir.
Dosyaları Kilitlemek : flock()
Bir
dosya üzerinde işlem yapmak tek bir kullanıcı için geçerli değildir. Bir
dosyanın birden fazla yetkili kullanıcısı olabilir. Bu kullanıcılar, dosya
üzerinde aynı anda farklı işlemler de yapıyor olabilir. Bu durumda dosyanın
çalışma akışı bozulacaktır. Sorun olabilecek bu durumun önüne geçebilmek için
dosya kilitleme sistemini devreye sokmak gerekmektedir. Dosyaları kilitleyip
herhangi bir sorun olmasını engelleyen fonksiyon flock() fonksiyonudur.
Kilitlenen
dosyanın kilitten kurtulması için fclose()
fonksiyonu kullanılır.
Dosyaları Kapatmak : fclose()
Bir
dosya üzerinde işlem yapıldıktan sonra o dosyanın kapatılması gerekmektedir.
Bunu sağlayan fonksiyon da fclose()
fonksiyonudur.
fclose()
kullanımı
<?php
$dosya
= fopen('dosyam.txt', 'r');
fclose($dosya);
?>
Dosya Kopyalamak : copy()
Bir
dosya başka bir dosya üzerine kopyalanmak istendiği zaman, copy() fonksiyonu kullanılmaktadır.
fclose()
kullanımı
copy(“dosya1.txt”,
“dosya_yeni.txt”);
Bir Dosya’nın Olup Olmadığını
Kontrol Etmek : file_exists()
Bu
fonksiyon bir dosya veya dizinin mevcut olup
olmadığını araştırır. Sonucu TRUE ya da FALSE döndürür.
file_exists()
kullanımı
<?php
$dosya_yol_adresi
= “dosya/dosya.php”;
file_exists($dosya_yol_adresi);
?>
Dosya’nın Son Erişim Zamanına Ait
Bilgiler : fileatime()
Bir dosya’ya en son erişilen zamanı döndürür. Sonuç TRUE ya da
FALSE olarak döndürülür.
Yüklemesi Yapılan Bir Dosyanın
Taşınacağı Hedef Klasörü Belirlemek : move_uploaded_file()
HTTP_POST metodu ile yüklemesi yapılan bir dosyayı hedef klasöre taşımak
için move_uploaded_file() fonksiyonu
kullanılmaktadır.
move_uploaded_file()
kullanımı
<?php
$file_temp
= $_FILES["file"]["tmp_name"];
$yol
= “dosya/dosya.php”;
move_uploaded_file($file_temp,
"$yol")
?>
Bir Dosyanın İsim Bilgisini
Değiştirmek : rename()
Belirtilen dosyanın adını değiştirmek için rename() fonksiyonu
kullanılmaktadır.
rename()
kullanımı
<?php
rename($eski_adres,
$yeni_adres);
?>
Sorgulanan Olayın Dosya Olup
Olmadığını Araştırmak : is_file();
Bir
dosyanın dosya olduğunu doğrulama ve kontrol etme işlevini gören fonksiyon is_file() fonksiyonudur. is_file()
fonksiyonu dosya yolunun varlığını sorgular ve sonucu true ya da false
döndürür.
is_file()
fonksiyonu
<?php
if(is_file("deneme.txt")){
echo "deneme.txt dosyası
mevcuttur.";
}
?>
Dosya Yükleme İşlemleri
PHP
web tabanlı bir programlama dili olmasından dolayı internet kullanıcılarıyla
bire-bir etkileşim halindedir. Bu durum, kullanıcıların da işlem yapabilmesi
anlamına gelir. İnternet, kullanıcı odaklı olan bir platform olarak
düşünüldüğünde, bu platformu form alanlarından oluşturmak kaçınılmaz olacaktır.
Form alanları her zaman text verileri taşımak için kullanılmaz. Bunun dışında,
dosya(image dosyası, kurulum dosyası, ses dosyası vb..) taşımak ve yüklemek
için kullanılır. Böyle bir durumun varlığında kullanılacak olan işlem, dosya
yükleme işlemidir.
Yüklenen
dosya, o dosya ile birlikte eklenen bilgilerin beraberinde kaydedilir ve bu da
$_FILES süper globalinde depolanan bir dizi veri akışı ile gerçekleşir.
Dosya Yükleme Fonksiyonları
Bilgi Akışı
|
Bilgi
|
$_FILES['dosya']['name']
|
Yüklenen dosyanın gerçek ismi
|
$_FILES['dosya']['tmp_name']
|
Yükleme sırasında veri depolanan geçici
klasör yolu
|
$_FILES['dosya']['size']
|
Yüklenen dosyanın byte bazında boyutu
|
$_FILES['dosya']['type']
|
Yüklenen dosyanın veri tipi
|
Terimlerin
anlamlarını şu şekilde özetleyebiliriz:
- ['name']
terimi, dosyanın orjinal ismini belirtir (Örnek: adsiz.jpg).
- ['tmp_name']
terimi, yükleme yapılacak adresi belirtir (Örnek: resimler/).
- ['size']
, dosyanın boyutunu gösterir (Örnek: 200KB).
- ['type']
, dosyanın yapısını irdeler, veri tipi hakkında bilgi verir (Örnek:.jpeg).
Yükleme Formu Oluşturmak
Yükleme
formunu oluşturmak için öncelikle bir form oluşturmak gerekmektedir. Zira veri
aktarma işlemi için form alanlarına ihtiyacımız olacaktır. Dosya yükleme
işleminde HTML formları, ENCTYPE argümanını içermelidir.
Yükleme
Formu Görüntüsü
ENCTYPE="multipart/form-data"
Aşağıdaki
kodları form.html dosya adıyla
kaydedelim.
form.html
<html>
<body>
<h3>Dosya
Yükleme</h3>
Bir
dosya seçiniz:
<br/>
<form
action="upload.php" method="post" enctype="multipart/form-data">
<input
type="file" name="file" size="50">
<br/>
<input
type="submit" value="Dosya Yükle">
</form>
</body>
</html>
Görüldüğü
gibi enctype="multipart/form-data" terimi form bilgilerinde
belirtilmiştir. Buton'a basıldığında, upload.php sayfasında dosya yükleme
işlemi yapılmış olacaktır.
form.html ekran görüntüsü |
Aşağıdaki
kodları upload.php dosya adıyla
kaydedelim.
upload.php
<?php
if($file_name
!="") {
copy
("$file", "$file_name")
or die("Dosya
Yüklenemedi!");
}
else
{
die("Dosya Bulunamadı!");
}
?>
<html>
<body><h3>Dosya
Başarıyla Yüklendi...</h3>
<ul>
<li>Gönderilen
Dosya: <?php echo "$file_name"; ?>
<li>Boyut: <?php echo "$file_size"; ?>
byte
<li>Dosya
Tipi: <?php echo "$file_type"; ?>
</ul>
<a
href="<?php echo "$file_name" ?>">
Dosya'yı
görmek için tıklayınız..</a>
</body>
</html>
copy
("$file", "/upload/$file_name") komutunda belirtilen yol
adresi, dosyanın yüklemesinin yapılacağı adrestir ve belirtilmez ise yükleme
işlemi gerçekleştirilemeyecektir.
Upload.php ekran görüntüsü |
İrdeleme
Köşesi
Dosya
yükleme işlemlerinde unutulmaması gereken en önemli konu, dosyanın
yüklenileceği klasörün chmod 777 ayarının yapılması gerektiğidir.
Çünkü
klasör içerisinde işlem yapılacaktır. Bu sebeple bütün izinler verilmeli,
erişim kısıtlandırılmamalıdır.
Dizin Fonksiyonları
Bundan
önceki konularda dosyalar ile çalışma şekilleri ve bunları sağlayan
fonksiyonları öğrenmiştik. Dosyaların dizinlerle ortak bir çalışma içerisinde
olduğundan bahsetmiştik. PHP programlama dili, bu konuda bizlere bazı
fonksiyonlar sunmaktadır. Bu bölümde bazı dizin fonksiyonlarına değinilecektir.
Sorgulanan
İfadenin Dizin Olup Olmadığını Sorgulamak : is_dir();
is_dir()
fonksiyonu, kullanış amacı açısından is_file() ile benzerlik gösterir. Fakat, is_file()
fonksiyonunun aksine bir dizinin varlığını sorgular.
is_dir()
fonksiyonu
<?php
if(is_dir("/tmp"))
{
echo "Dizin varlığı
doğrulandı.";
}
?>
Belirtilen Dizindeki
Kullanılabilir Alanı Sorgulama : disk_free_space();
Belirtilen
bir dizin içerisindeki kullanılabilecek bölümün bayt cinsinden değerini
döndürmek için disk_free_space()
fonksiyonu kullanılmaktadır.
disk_free_space()
fonksiyonu
disk_free_space("C:");
Belirtilen Dizinin
Bulunduğu Disk Bölümünün Toplam Alanını Sorgulama : disk_total_space();
Belirtilen
bir dizin içerisindeki bütün alanın bayt cinsinden değerini döndürmek için disk_total_space() fonksiyonu
kullanılmaktadır.
disk_total_space()
fonksiyonu
disk_free_space("C:");
Belirtilen Adres
Üzerinde Bir Dizin Oluşturmak : mkdir();
Yolu
belirtilmiş bir adres üzerinde dizin oluşturmak için mkdir() fonksiyonu kullanılmaktadır.
mkdir()
fonksiyonu
mkdir("/klasor/klasor2/dosya",
0777);
Görüldüğü
gibi, klasor/klasor2/dosya şeklinde bir yol oluşturuldu ve chmod 777 (tüm
yetkiler atandı) olarak ayarlandı.
Dizin Silmek :
rmdir();
rmdir()
fonksiyonu parametre ile belirtilen dizini yok eder.
rmdir()
fonksiyonu
<?php
//Dizin
oluştur.
mkdir("/klasor/klasor2/dosya",
0777);
//Dizin
yok et.
rmdir("/klasor/klasor2/dosya”);
?>
mkdir()
fonksiyonu ile oluşturduğumuz dizin, rmdir() fonksiyonu ile silinmiştir.
Bir Dizini Açmak :
opendir();
Belirtilen
bir dizin, mevcut olup olmadığına bakılmak suretiyle opendir() fonksiyonu yardımıyla okunmak için açılmaktadır. Sonuç
TRUE ya da FALSE döndürülmektedir.
opendir()
fonksiyonu
<?php
//Belirtilen
dizin açılıp okundu.
opendir("/klasor/klasor2/dosya”);
?>
CHMOD Kavramı
CHMOD kelime olarak İngilizce Change Mode kelimesinin harflerinden gelmektedir. Türkçe ’de Türünü Değiştirmek olarak adlandırmak
yanlış olmayacaktır.
CHMOD kavramı aslında
UNIX işletim sisteminde bulunan bir komuttur ve dosyaların niteliklerini
değiştirmeye yardımcı olur. Windows ya da başka bir işletim sisteminde kurulu
PHP server’a sahipseniz, chmod ayarı yapabileceğiniz bir platform olmayacaktır.
Ancak FTP üzerinden dosya transferi yaparken chmod kavramı karşınıza
çıkacaktır.
Chmod
İzin Grupları
Chmod başlıca şu izinleri uygulamaktadır:
- Okuma
izni,
- Yazma
izni,
- Çalıştırma izni
Okuma İzni : READ
Eğer
bir dosyanın okuma izni varsa, dosyanın içeriği ve içerdiği dosyalar
dizinlenebilir.
Yazma İzni : WRITE
Yazma
iznine sahip bir dosyanın içeriğine içerik eklenebilir, silinebilir veya
içerisine transfer yapılabilir.
Çalıştırma İzni : EXECUTE
Çalıştırma
izni olan bir dosya, adından da anlaşılacağı gibi, çalıştırılabilir.
Chmod 777(tüm izinler atanmış) olan bir dosyanın görüntüsü |
Chmod
ayarları farklı numaralardan oluşur ve her birinin farklı anlamları vardır.
- 0
Dosya ’ya
erişim izni yoktur.
- 1
Dosya ’yı
çalıştırma izni vardır.
- 2
Dosya ’ya
yazma izni vardır.
- 4 Dosya ’yı okuma izni vardır.
Chmod
777 ayarı, bir dosyaya ya da dosya ile bağlantılı bütün dizinlere verilebilecek
izinlerdir. Chmod 777 olarak belirlenen bir dosyanın, okuma, yazma ve
çalıştırma izni vardır. Aslında
777 ifadesi doğru değildir. Çünkü bu değerin sekizlik bir değer olduğunu
varsayılmaktadır ve başına 0 alması gerekmektedir (0777, 0755, vs).
- Dosya yüklemesi (upload işlemi) yapmak istenilen dosyanın chmod ayarı 777 olmalıdır.
- Anket bilgilerinin depolandığı text dosyasının ya da veritabanı olarak kullanılan herhangi bir dosyanın chmod ayarı 777 olmalıdır.
- Sistem istatistiklerinin depolandığı log’ların chmod ayarı 777 olmalıdır.
Chmod Ayarları
Rakam
|
Özellik
|
0
|
Erişim
yok
|
1
|
Çalıştırma
izni
|
2
|
Yazma
izni
|
3
|
Yazma
ve çalıştırma izni
|
4
|
Okuma
izni
|
5
|
Okuma
ve çalıştırma izni
|
6
|
Okuma
ve yazma izni
|
7
|
Okuma,
yazma ve çalıştırma izni
|
0777
ifadesindeki rakamlar sırasıyla 0, 7, 7, 7 ‘dir. Buradaki rakamların anlamları
şu şekilde ifade edilebilir.
·
0 Sekizlik sistemde konulması
gerekmektedir
·
7 Kullanıcı
·
7 Grup
·
7 Diğer kullanıcı ya da gruplar
FTP üzerinden bir dosya için izin
ayarları yapmak istersek aşağıdaki gibi bir görüntüyle karşılaşırız.
Chmod ayarı 756 olan bir dosya örneği |
Yukarıda görüldüğü gibi, bir
dosyanın erişim hakkı her zaman aynı olmaz. Chmod 756 olan bir dosya
görülmektedir. Bu dosyanın yazma hakkına bir kısıtlama getirilmiştir ve 756
izni olarak görülmektedir.
Bir sonraki yazıda görüşmek üzere!
Hiç yorum yok:
Yorum Gönder