Menu

Lucrul cu fisiere in PHP

Ati invatat in lectia Include si file_get/put_contents despre 2 functii foarte utile si foarte simple in acelasi timp pentru lucrul cu fisiere. De data aceasta veti invata functii mai complicate dar si mult mai adecvate cand lucrati cu fisiere in PHP.
PHP include foarte multe functii pentru lucrul cu fisiere dar eu ma voi asigura ca nu va voi umple capul cu functii nefolositoare si va voi invata doar functiile considerate de mine necesare. In caz ca doriti sa cititi despre absolut toate functiile pentru fisiere din PHP puteti citii pe site-ul oficial.

1. Functii pentru lucrul cu fisiere in PHP

Mai jos veti vedea un tabel cu functiile recomandate de mine pentru lucrul cu fisiere in PHP:
basename($path) Returneaza numele(cu tot cu extensie) al unui fisier eliminand calea spre el
chmod($fisier, $permisiuni ) Schimbi permisiunile unui fisier. Permisiunile trebuie sa fie in octal si nu in decimal.
chown($fisier, $user) Schimbi proprietarul unui fisier
clearstatcache() Folosita pentru a afisa rezultate corecte cand lucram cu fisierele si nu rezultate salvate in cache.
copy($sursa, $destinatie) Folosita pentru copierea unui fisier. Returneaza true in caz ca reuseste sau false in caz contrar.
dirname($path) Returneaza directorul parinte din path.
file_exists($fisier) Functia returneaza true in caz ca fisierul exista sau false in caz ca nu exista.
filegroup($fisier) Returneaza grupul fisierului in format numeric(id-ul lui).
fileowner($fisier) Returneaza id-ul detinatorului fisierului respectiv.
fileperms($fisier) Returneaza permisiunile fisierului respectiv. Rezultatul acestei functie este salvat in cache , folositi clearstatcache() pentru rezultate nesalvate in cache. In caz ca esueaza este generata o eroare de tip E_WARNING
filesize($fisier) Returneaza dimensiunea fisierului in bytes.
filetype($fisier) Returneaza tipul fisierului, in caz ca nu cunoaste tipul genereaza o eroare de tip E_NOTICE si returneaza false
is_readable($fisier) Returneaza true in caz ca fisierul exista sau false in caz ca nu exista.
is_uploaded_file($fisier) Returneaza true in caz ca fisierul a fost uploadat prin HTTP POST sau false in caz contrar. Are o stransa legatura cu securitatea.
is_writable($fisier) Returneaza true in caz ca $fisier exista si se poate scrie in el, in caz contrar returneaza false.
mkdir( $pathname [, $mode = 0777) Functia creeaza un director(folder).
unlink($fisier) Sterge fisierul $fisier

filegroup returneaza id-ul grupului, pentru convertirea acestuia in array se foloseste functia posix_getgrgid($gid)

fileowner returneaza id-ul ownerului, pentru convertirea acestuia in array se foloseste functia posix_getpwuid($uid)

Mai jos veti vedea si cateva exemple ale functiilor mentionate mai sus.

1.1 Basename

Functia basename este folosita pentru a afla numele unui fisier(cu tot cu extensie) eliminand calea spre el. Mai jos veti vedea un exemplu de folosire.
<?php  
echo basename('/etc/php.ini').'<br/>';
echo basename('/aaa/bbb/ccc/ddd.extensie').'<br/>';
echo basename($_SERVER['REQUEST_URI']).'<br/>';
?>
Output:

1.2 FileType, FileSize, dirname si File Exists

Un exemplu cu de toate de data aceasta.
<?php  
echo 'FileType: <b>'.filetype('test.php').'</b><br/>';
echo 'FileSize: <b>'.filesize('test.php').'</b><br/>';
echo 'Dirname: <b>'.dirname('public_html/test.php').'</b><br/>';
echo 'File Exists: <b>'.file_exists('test.php').'</b>';
?>

2. Permisiunile fisierelor

O sa incerc sa trec prin acest capitol mai rapid, deoarece aici nu este vorba doar de php si mai exact de permisiunile fisierelor. Unii programatori prefera sa expirme permisiunile prin litere dar eu insa le prefer doar prin numere.
Probabil ati intalnit de foarte multe ori in contextul permisiunilor cifre de genul 777 , 644, 774 si tot asa. Ce sunt mai exact aceste cifre? Ei bine 777 explica permisiunile pentru 3 mari categorii: owner, group si other.
Deci daca luam permisiunile 644 primul numar(7) se refera la owner(detinatorul fisierului), al doilea numar(4) se refera la grup iar al treilea numar(4) se refera la altii.
Probabil ati mai intalnit si 0777 in reprezentarea in octal, acel 0 se refera la fara moduri speciale.
Permisiunile sunt:
Permisiune Cifra
Citire 4
Scriere 2
Executare 1
Deci permisiunea citire , scriere si executare este reprezentata in mod numeric prin 4 , 2 si 1 care adunate fac 7
. Daca dorim sa spunem citire si scriere in mod numeric vine 4 si 2 iar adunate fac 6
Daca dorim sa spunem citire in mod numeric vine 4.
Hai sa facem un mic exercitiu. Sa spunem ca dorim sa cream permisiunile cu urmatoarele:
  • owner: citire , scriere si executare = 4+2+1 = 7
  • grup: citire, scriere si executare = 4+2+1 = 7
  • altii: citire = 4
Rezultatul este 774. Parca pare mai simplu chmod-ul acesta nu? Puteti sa va jucati si sa invatati mai multe despre chmod pe pagina noastra despre permisiuni.

3. Modifica permisiunile unui fisier

In capitolul anterior am invatat despre permisiuni, in caz ca nu ai inteles permisiunile viziteaza pagina permisiuni si joaca-te acolo. Dar acum trebuie sa si schimbam permisiunile fisierelor, de mentionat insa ca trebuie ca PHP sa ruleze cu owner-ul fisierului respectiv pentru a-i modifica permisiunile. Pentru a modifica permisiunile unui fisier se foloseste functia chmod($fisier, $permisiuni) unde permisiune este valoarea numerica a permisiunilor(despre care ati invatat in capitolul anterior) cu un 0(zero) in fata. Deci daca dorim sa atribuim valoarea numerica 777 fisierului test.txt vom folosii urmatorul cod:
<?php  
$mod = 0777; // observati zero-ul dinaintea valorii
$fisier = 'test.txt';
chmod($fisier, $mod); // schimbam permisiunile
# Folosim fileperms() pentru a afla permisiunile unui fisier
$permisiuni = substr(sprintf('%o', fileperms($fisier)), -4);
echo "Permisiunile fisierului <b>$fisier</b> sunt <b>$permisiuni</b>";
?>
Output:


Ti-a placut articolul? Asigura-te ca-ti dam de veste cand publicam altele noi.


Tags: Tutoriale, Programare Web, Php, Curs Php

Comments Nota 0 din 0