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
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
<?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
<?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
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 |
. 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
3. Modifica permisiunile unui fisier
<?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:
Tags: Tutoriale, Programare Web, Php, Curs Php