Penanganan File dan Direktori
Bagian ini berisi t ent ang fungsi- fungsi built - in PHP y ang m enduplik asi fungsi- fungsi y ang t erdapat di dalam sy st em . Salah sat u fungsi y ang sangat berguna ant ara lain fungsi y ang digunak an unt uk m em anipulasi file, sepert i y ang digunak an unt uk m em baca dan m enulis file. Beberapa fungsi- fungsi built - in PHP y ang dapat digunak an unt uk m em anipulasi file hany a dapat digunak an secara spesifik unt uk dalam sist em operasi berbasis Unix . Walaupun dem ik ian fungsi- fungsi dasar PHP y ang digunak an unt uk m em anipulasi file t et ap dapat digunak an dalam sist em operasi Microsoft Window s.
1 .2 Tu j u a n
Tuj uan dalam pem belaj aran ini adalah m ahasisw a m enget ahui dan m enggunak an fungsi- fungsi dasar dari PHP y ang digunak an unt uk :
1. Mem baca file 2. Menulis file
3. Menj alank an fungsi- fungsi sist em file dan direk t ori
1 .3 D e finisi
File
Sebuah file k om put er adalah sebuah infor m asi pent ing at au resource lain y ang digunak an unt uk m eny im pan inform asi, dim ana infor m asi t ersebut t ersedia unt uk program k om put er dan pada um um ny a berbasisk an suat u m edia peny im panan y ang bersifat t ahan lam a. Sebuah file dik at ak an t ahan lam a dalam art ian j ik a file t ersebut t et ap ada dan dapat digunak an w alaupun program y ang m enggunak an file t ersebut t elah selesai.
D ir e k t or i ( Folde r )
Sebuahdirek t ori adalah sebuah t em pat penam pungan file v irt ual dalam sebuah ant arm uk a pengguna, dim ana sek elom pok file k om put er at au direk t ori lain disim pan dan dik elola m enj adi sebuah st rukt ur k at alog file. I st ilah folder dan direk t ori dalam k om put er dapat diart ik an sebagai sat u hal y ang sam a.
File- file y ang saling berk ait an dapat dit em pat k an dalam direk t ori y ang sam a unt uk m em per m udah pengelolaanny a. Sebuah direk t ori y ang t erdapat didalam direk t ori lainny a dinam ak an dengan subdirek t ori. Dir ek t ori y ang let ak ny a paling at as disebut direk t ori r oot .
2 . PEN AN GAN AN FI LE
2 .1 File Pe r m ission s
File perm ission di sist em operasi Unix / Linux dilam bangk an dengan sim bol r w x dan 3 digit angk a unt uk m engindik asik an perm ission y ang diperbolehk an t erhadap suat u file. Set iap digit angk a m erepresent asik an perm ission t erhadap seorang user/ gr oup/ lainny a, r adalah perm ission unt uk operasi baca ( read) , w unt uk operasi t ulis ( w rit e) , dan x unt uk operasi ex ecut e. Digit y ang pert am a m erepresent asik an perm ission unt uk ow ner ( pem ilik file) , digit y ang k edua m erepresent asik an perm ission unt uk k elom pok user ( group) , dan digit y ang k et iga m erepresent asik an perm ission unt uk user lain y ang t idak t erm asuk ke dalam gr oup user pem ilik suat u file. Seorang superuser ( root ) dapat m elihat , m enu lis, dan m enj alank an file y ang dim ilik i oleh seluruh user y ang t erdaft ar dalam k om put er.
Set iap digit m eru pak an represent asi k ode biner dar i per m ission y ang dim ilik i oleh sebuah file. Sebagai cont oh, sebuah file dengan perm ission 644 ( rw - r- - r- - ) dapat dibaca oleh sem ua user, nam un hany a dapat dit ulis dan diubah isiny a oleh pem ilik file t ersebut selain dari user root . Sebuah file dengan per m ission 7 77 ( rw x rw x w rx ) at au seringk ali disebut dengan w orld
w rit eable perm issionsberart i file t ersebut dapat dibaca, dit ulis, dan diek sekusi oleh seluruh
user.
2 .2 File Pe r m ission s u n t u k file PH P
Secara spesifik , perm issions unt uk file dan direk t ori y ang digunak an oleh PHP dapat dibagi m enj adi dua, y ait u:
1. Perm ission 644 ( rw - r- - r- - ) unt uk seluruh file PHP, k ecuali ada alasan lain unt uk m enggunak an perm ission selain 644 .
2. Unt uk direkt ori, gunak an perm ission 751 ( rw x - r- x - - x ) at au 755 ( rw x r- x r- x ) , kecuali ada alasan lain unt uk m enggunak an perm ission selain 751/ 755.
Perm ission file PHP t idak perlu unt uk diset sebagai ex ecut able. File PHP y ang ak an dij alank an oleh w ebserv er hany a perlu m em ilik i perm ission sedem ik ian rupa sehingga file PHP t ersebut dapat dibaca oleh user y ang m enj alank an w eb serv er, dalam hal ini Apache. User y ang
m enj alank an Apache w eb serv er biasany a nobody, httpd, at au apache.
Ca t a t a n
2 .3 Fu n gsi- fu n gsi U n t u k M e m ba ca da n M e nu lis File
PHP m em ilik i sek um pulan set fungsi y ang dapat digunak an unt uk m em anipulasi file dan direk t ori. Diant ara fungsi- fungsi t ersebut , fungsi- fungsi y ang sering digunak an ant ara lain fungsi- fungsi unt uk m engubah at ribut file, m em baca dan m enam pilk an isi dari suat u direk t ori, m engubah per m issions suat u file, m em baca isi sebuah file dan m engubahny a m enj adi st ruk t ur dat a y ang lain, sert a m encari suat u file dengan k rit eria pencarian t ert ent u.
Fungsi- fungsi built - in PHP y ang t ersedia sangat berm anfaat unt uk m eny im pan suat u dat a at au inform asi k e dalam sebuah file. Terlebih lagi j ik a inform asi y ang disim pan t erlalu k ecil dan t ersebar sehingga perlu m enggunak an sebuah sist em basis dat a. Penggunaan sist em basis dat a m em ang m enaw ark an fit ur pengelolaan dat a y ang j auh lebih baik daripada file. Nam un sist em basis dat a m em erluk an resource y ang lebih besar daripada sist em file biasa.
Sebuah operasi m anipulasi file um u m ny a m elibat k an langk ah- langk ah berik ut :
1. Mem buk a file unt uk operasi baca at au t ulis,
2. Mem baca isi file
3. Melak uk an operasi t erhadap isi file
4. Menulisk an hasil operasi k e dalam file
5. Menut up file
Set iap langk ah dari operasi m anipulasi file t ersebut m em ilik i k orespondensi fungsi sist em file dalam PHP secara t ersendiri.
M e m ba ca File
Sebagai langk ah aw al, m isalk an t erdapat sebuah proses m em buk a sebuah file unt uk dibaca isiny a dan dit am pilk an dalam sebuah halam an w eb. Sebagai cont oh, script PHP berik ut
m em perlihat k an sebuah operasi m em baca suat u file. Nilai v ariabel $filename y ang t erdapat
di aw al script PHP dapat disesuaik an dengan pat h dan nam a file lain y ang ak an dibaca isiny a.
<?php// filename: read.php
// file yang akan dibaca $filename = “data.txt”;
// buka file
$fd = fopen($filename, “r”)
or die(“Can’t open file $filename”);
// baca isi file
$fstring = fread($fd, filesize($filename));
// tutup file fclose($fd);
// tampilkan isi file echo $fstring;
?>
1. Mem buk a file dan m eny im pan resource y ang dihasilk an k e dalam sebuah file handle. PHP m em erluk an sebuah file handle unt uk m em baca dat a dari dalam sebuah file. File
handle t ersebut dapat diperoleh dari fungsi fopen().Fungsi fopen()m enerim a dua
argum en. Argum en y ang pert am a berisi pat h dan nam a file y ang ak an dibuk a.
Argum en k edua adalah m ode operasi y ang ak an dilak uk an t erhadap file, dim ana ‘r’
adalah m ode operasi unt uk m em baca. Jik a file berhasil dibuk a, m ak a $fd ak an berisi
handler unt uk file $filename, j ik a t idak , m ak a script ak an berhent i dan m enam pilk an
pesan k esalahan.
// buka file
$fd = fopen($filename, “r”)
or die(“Can’t open file $filename”);
2. File handle y ang diper oleh dari fu ngsi fopen() digunak an sebagai argum en fungsi
fread(). Fungsi fread() selain m enerim a ar gum en handler, j uga m en erim a argum en k edua y ang digunak an unt uk m enent uk an j um lah byt e y ang ak an dibaca. Jik a seluruh
isi file ak an dibaca, inform asi j um lah by t e ini dapat diperoleh dari fungsi filesize()
y ang m enghasilk an j um lah by t e dar i file. I si file y ang dibaca disim pan dalam v ariabel
$fstring.
// baca isi file
$fstring = fread($fd, filesize($filename));
3. Menut up file dengan fungsi fclose() unt uk m em bebask an penggunaan m em ory y ang
t elah digunak an oleh file handler. Fu ngsi ini bersifat opsional.
// tutup file fclose($fd);
Sebagai alt ernat if unt uk m em baca file dengan PHP adalah dengan m enggunak an fungsi
file(). Fungsi file() t ersebut ak an m enghasilk an sebuah array , dim ana set iap elem en array y ang dihasilk an berisi set iap baris y ang ada dalam file y ang dibaca. Unt uk m enam pilk an
isi file y ang dibaca dengan m enggunak an fungsi file() cuk up m elak uk an it erasi dengan
m enggunak an perulangan foreach() t erhadap v ariabel array y ang dihasilk an oleh fungsi
file() dan m enam pilk an t iap elem en ( baris) - ny a.
Berik ut ini adalah cont oh script PHP y ang m em per lihat k an penggunaan fungsi file() unt uk
m em baca isi dari sebuah file:
<?php// filenamefile.read.php
// file yang akan dibaca $filename = “data.txt”;
// bacaisi file
$lines = file( $filename ) or die( “Could not read file” );
// tampilkan isi file
foreach ($lines as $line) { echo $line;
}
M e n u lis File
Langk ah- langk ah y ang digunak an unt uk m enulisk an dat a k e dalam sebuah file serupa dengan m em baca file y ak ni:
1. Mem buk a file,
2. Menulisk an dat a, dan
3. Menut up file.
Sebagai cont oh, script PHP berik ut ak an m enulisk an sebuah k alim at k e dalam sebuah file:
<?php // filename: write.php
// file yang akan ditulis $filename = “data.txt”;
// buka file
$fd = fopen($filename, “w”)
or die(“Can’t open file $filename”);
// isi file yang akan dituliskan $content = “Hello, World!”;
// tulis isi file $fwrite($fd, $content)
or die(“Can’t write to file $filename”);
// tutup file fclose($fd);
?>
Sebagai alt ernat if, fungsi file_put _cont ent s( ) dapat digunak an m ulai PHP v ersi 5.0 unt uk m enulisk an baris st ring k e dalam sebuah file dengan hany a sebuah fungsi. Cont oh:
<?php // filename: putcontents.write.php // requires PHP 5.0
// file yang akan ditulis $filename = “data.txt”;
// isi file yang akan dituliskan $content = “Hello, World!”;
// buka file Ca t a t a n
Fungsi fopen(), fread(), dan fclose() adalah fungsi y ang bersifat binary - safe, sehingga
am an digunak an unt uk m em baca file binary ( selain file t ek s) t anpa perlu k uat ir ak an m erusak isiny a.
Fungsi die() adalah sebuah fungsi prim it if y ang sering digunak an unt uk m enam pilk an
$file_put_contents($filename, $content) or die(“Can’t open file $filename”);
?>
M ode - m ode Ope r a si File
File dapat dibuk a dengan 6 m acam alt ernat if m ode operasi. Jik a m ode operasi y ang digunak an t idak sesuai at au t idak diperbolehk an oleh perm ission file y ang ak an dibuk a, m ak a fungsi fopen( ) ak an gagal dij alank an . Mode- m ode operasi t ersebut ant ar a lain:
• Read- only ( “ r” ) .
• Read dan w r it e, j ik a file sudah ada ( “ r+ ” ) , penulisan dat a ak an dit aruh dibagian aw al
file y ang dibuk a.
• Writ e- only ( “ w ” ) ak an m em buat file dengan nam a file y ang diberik an j ik a file y ang
dit ent uk an belum ada. Mode operasi ini ak an m enghapus seluruh isi file y ang dit ent uk an dalam argu m en fungsi fopen( ) sebelum m enulisk an dat a yang baru. Mode ini hany a dapat digunak an unt uk m enulis file dan t idak dapat digunak an unt uk m em baca isi file.
• Writ e dan read ( “ w + ” ) serupa dengan m ode “ w ” , nam un m ode ini m engizink an file
unt uk dibaca isiny a.
• Append ( “ a” ) , m enulis/ m enam bah k an dat a di bagian ak hir dari file. Tidak dapat
digunak an unt uk m em baca isi file.
• Read- append ( “ a+ ” ) digunak an unt uk m em baca, m enulis, dan/ at au m enam bahk an
dat a di bagian ak hir dari file.
Khusus unt uk m ode “ w ” dan “ w + ” perlu diperhat ik an secara lebih k husus unt uk m enghindari hilangny a dat a, k arena k edua m ode t ersebut ak an m enghapus seluruh isi file sebelum m enulisk an dat a y ang baru.
2 .4 Fu n gsi- Fu n gsi Sist e m File da n D ir e k t or i
Selain fungsi- fungsi y ang dapat digunak an unt uk m em baca dan m enulis file, PHP j uga m eny ediak an fungsi- fungsi y ang dapat digunak an unt uk m enget es st at us dari suat u file. Beberapa diant arany a adalah fungsi unt uk m enget ahui ukuran file, m enget ahui apak ah file sudah ada at au belum , m enget ahui j enis file, dan lain- lain.Beberapa fun gsi- fungsi sist em file di PHP dapat dilihat pada Tabel 2.1.
Tabel 2.1 Fungsi- fungsi sist em file PHP
Fu n gsi D e sk r ipsi
file_exists() Mem berik an nilai boolean y ang m engindik asik an adany a file
Pe r h a t ia n
is_dir() Mem berik an nilai boolean y ang m engindik asik an argum en y ang
diberik an adalah sebuah direk t ori at au buk an.
is_file() Mem berik an nilai boolean y ang m engindik asik an argum en y ang
diberik an adalah sebuah file at au bu k an
is_link() Mem berik an nilai boolean y ang m engindik asik an argum en y ang
diberik an adalah sebuah sy m bolic link at au buk an
is_executable() Mem berik an nilai boolean y ang m engindik asik an file dapat diek sek usi
at au t idak
is_readable() Mem berik an nilai boolean y ang m engindik asik an file dapat dibaca at au
t idak
is_writable() Mem berik an nilai boolean y ang m engindik asik an file dapat dit ulisi at au
t idak
filesize() Mem berik an nilai uk uran file dalam sat uan by t es
filemtime() Mem berik an w ak t u m odifik asi t erak hir t erhadap file
fileatime() Mem berik an w ak t u ak ses t erak hir t erhadap file
fileowner() Mem berik an pem ilik file
filegroup() Mem berik an group file
fileperms() Mem berik an nilai perm issions suat u file
filetype() Mem berik an j enis file
Berik ut ini adalah cont oh script PHP y ang m endem onst rasik an beberapa fungsi sist em file PHP. Nilai v ariabel $file dapat disesuaik an dengan pat h dan nam a file y ang ak an diperik sa st at usny a.
<?php // filename: file.check.php
// file yang akan diperiksa $file = “data.txt”;
// menampilkan ukuran file dalam bytes
echo 'File size: ' . filesize($file) . ' bytes';
// menampilkan jenis file
echo 'File type: ' . filetype($file);
// memeriksa apakah file ada atau tidak
echo file_exists($file) ? 'File ada' : 'File tidak ada';
// memeriksa apakah file dapat dieksekusi
echo is_executable($file) ? 'File dapat dieksekusi' : 'File tidak dapat dieksekusi';
// memeriksa apakah file dapat dibaca
echo is_readable($file) ? 'File dapat dibaca' : 'File tidak dapat dibaca';
// memeriksa apakah file dapat ditulisi
?>
M e n a m pilk a n I si Su a t u D ir e k t or i
Seringk ali k ebut uhan m engenai operasi pada sist em file t idak hany a berkait an dengan sebuah file t unggal, nam un j uga berk ait an dengan bany ak file dan bany ak direk t ori. Hal t ersebut m enim bulk an sebuah t ugas t am bahan m engit erasi dan m engolah dat a beberapa direk t ori dan file- file y ang t erdapat didalam n y a.Unt uk dapat m eny elesaik an t ugas t ersebut , PHP m eny ediak an beberapa fungsi unt uk m em anipulasi direk t ori sehingga file- file y ang t erdapat dalam beberapa direk t ori dapat disusun dan diolah secara sek aligus.
Berik ut ini adalah cont oh script PHP sederhana y ang berfungsi unt uk m enam pilk an isi dari sebuah direk t ori dan m enam pilk an j um lah file y ang t erdapat di dalam direk t ori t ersebut :
<?php // filename: list.dir.php
// inisialisasi counter $count = 0;
// menentukan nama direktori yang akan diperiksa $dir = "/data";
// periksa apakah $dir adalah direktori if (is_dir($dir))
{
// buka direktori yang ditentukan if ($handler = opendir($dir))
{
// dan lakukan iterasi untuk setiap file yang ada didalammnya while (($filename = readdir($handler)) !== false)
{
// selain file dengan nama “.” dan “..” if (($filename != ".") && ($filename != "..")) {
// hitung file $count++;
// dan tampilkan nama filenya echo $dir . "/" . $filename . "\n"; }
}
// tutup directory closedir($handler); }
}
// tampilkan jumlah file yang ditemukan
echo "-- Ditemukan $count file dalam direktori $dir --";
REFEREN SI
Vasw ani, Vik ram . 2005. How t o do Ev ery t hing w it h PHP & My SQL. McGraw - Hill/ Osborne. New York
Conv erce, Tim ; Park , Joy ce; Morgan Clark . 2004. PHP5 and My SQL Bible. Wiley Publishing, I nc., I ndianapolis, I ndian a
PROPAGASI
A. La t ih a n da n D isk u si ( Pr opa ga si V e r t ik a l da n H or iz on t a l)
Buat lah sebuah form buk u t am u dengan k et ent uan sebagai berik ut :
1. Jum lah field input y ang t erdapat dalam form t ersebut dalam bent uk t ex t dan t ex t area berj um lah 3 input . I nput t ersebut digunak an unt uk m enerim a m asuk an nam a, em ail, dan pesan dari pengun j ung.
2. Form y ang dibuat m enggunak an m et hod GET dengan nilai at ribut act ion adalah file
process.php
3. File process.php digunak an unt uk m engolah m asuk an y ang diberik an pada for m .
Nilai y ang dim asuk k an m elalui form buk u t am u disim pan k e dalam sebuah file t eks dengan posisi penam bahan dat a di ak hir.
4. Nam a file y ang digunak an unt uk m eny im pan dat a adalah “ dat a.dat ”
5. Set elah dat a berhasil disim pan, t am pilk an seluruh isi file “ dat a.dat ” t ersebut !
B. Tu ga s ( Ev a lu a si m a n dir i)
1. Jelask an apa y ang dim ak sud dengan file, direk t ori, dan sist em file!
2. Apa beda sist em file dalam sist em operasi Window s dan Unix / Linux ? Jelask an pengaruhny a t erhadap pem rogram an PHP!
C. Pe n ga y a a n Kom pe t e n si ( Ev a lu a si m a n dir i)
1. Dari program y ang dibuat pada lat ihan A, berik an 2 field t am bahan pada form y ang digunak an unt uk m enerim a m asuk an dari pengunj ung berupa alam at dan nom or t elepon!
2. Lak uk an peny esuaian pada file process.php unt uk m engak om odasi k ebut uhan
t erhadap 2 field t am bahan t ersebut !
3. Buat sebuah file t am pil.php y ang digunak an unt uk m enam pilk an isi dari file “ dat a.dat ” dalam bent uk t abel!