Php există un fișier. Sintaxa și utilizarea funcției file_exists. Ștergerea unui folder care nu este gol

Există momente când trebuie să verificați dacă un fișier specificat există sau nu, de exemplu, pentru a efectua ulterior unele acțiuni asupra fișierului.

Am întâlnit și această problemă la dezvoltarea modulului. Și am găsit două opțiuni pentru a rezolva problema.

Verificarea existenței unui fișier folosind un link URL

În PHP există o funcție " fopen", care poate fi folosit pentru a deschide adresa URL specificată.

ce facem? Încercăm să deschidem fișierul, iar dacă reușim, atunci fișierul există, în caz contrar, fișierul nu există.

Implementare:

Dar dacă nu avem un fișier, ci mai multe, ca să spunem așa, o serie de link-uri? Aceasta este exact sarcina care mi-a stat în fața de la bun început. Și soluția la această problemă este următoarea:

În acest caz, obținem o listă doar a acelor fișiere care există.

Verificarea existenței unui fișier local

Cuvântul „local” înseamnă că scriptul și fișierele pentru verificare se află pe același server. Dacă aveți o gamă destul de mare de legături, această opțiune este cea mai bună pentru a rezolva problema, deoarece nu facem o solicitare către un server terță parte, ci scanăm directoarele specificate.

Această metodă folosește funcția „file_exists” și, prin analogie cu opțiunea anterioară, înlocuiește pur și simplu o parte din script:

Și același lucru pentru matricea de legături:

Ce merită fiţi atenți? Faptul că această metodă este convenabilă pentru rularea fișierelor aflate în interiorul nostru sistem de fișiere. Prin urmare, este recomandabil să indicați toate legăturile ca fiind relative.

Apropo, la efectuarea uneia dintre comenzi, cu această metodă am reușit să scanez aproximativ 135.000 de fișiere în doar câteva secunde.

Există momente când trebuie să verificați dacă un fișier specificat există sau nu, de exemplu, pentru a efectua ulterior unele acțiuni asupra fișierului.

Am întâlnit și această problemă la dezvoltarea modulului. Și am găsit două opțiuni pentru a rezolva problema.

Verificarea existenței unui fișier folosind un link URL

În PHP există o funcție " fopen", care poate fi folosit pentru a deschide adresa URL specificată.

ce facem? Încercăm să deschidem fișierul, iar dacă reușim, atunci fișierul există, în caz contrar, fișierul nu există.

Implementare:

Dar dacă nu avem un fișier, ci mai multe, ca să spunem așa, o serie de link-uri? Aceasta este exact sarcina care mi-a stat în fața de la bun început. Și soluția la această problemă este următoarea:

În acest caz, obținem o listă doar a acelor fișiere care există.

Verificarea existenței unui fișier local

Cuvântul „local” înseamnă că scriptul și fișierele pentru verificare se află pe același server. Dacă aveți o gamă destul de mare de legături, această opțiune este cea mai bună pentru a rezolva problema, deoarece nu facem o solicitare către un server terță parte, ci scanăm directoarele specificate.

Această metodă folosește funcția „file_exists” și, prin analogie cu opțiunea anterioară, înlocuiește pur și simplu o parte din script:

Și același lucru pentru matricea de legături:

Ce merită fiţi atenți? Faptul că această metodă este convenabilă pentru rularea fișierelor aflate în sistemul nostru de fișiere. Prin urmare, este recomandabil să indicați toate legăturile ca fiind relative.

Apropo, la efectuarea uneia dintre comenzi, cu această metodă am reușit să scanez aproximativ 135.000 de fișiere în doar câteva secunde.

Parametrul necesar pentru această funcție este calea, care specifică calea către directorul care urmează să fie creat.

mkdir( „folder nou”);

Dacă specificați folderul în acest fel, acesta va fi creat în același director din care a fost lansat scriptul PHP. Dacă trebuie să creați directorul într-o locație diferită, puteți specifica cale relativăîn folderul care urmează să fie creat sau specificați calea completă din directorul rădăcină al site-ului.

mkdir( „../folder nou” ); // un nivel mai jos

mkdir("/folder1/folder2/newfolder"); // cale completă

În ultimul exemplu condiție prealabilă va exista existenta subdirectoarelor „folder1” si „folder2”. Dacă nu sunt acolo, funcția din acest formular nu va putea crea folderul și va returna o eroare:

Avertisment: mkdir(): Nu există un astfel de fișier sau director în...

Dacă are succes, funcția returnează True. Dacă pachetul nu a fost creat, este returnat False.

if (mkdir(„folder nou”))
ecou „Folderul creat cu succes”;
altfel
ecou „Folderul nu a fost creat”;

Dar nu ar trebui să utilizați această funcție fără a verifica prezența unui folder, deoarece serverul va afișa în continuare o eroare că folderul nu a putut fi creat.

Atribuirea drepturilor la crearea unui folder

Pentru atribuirea drepturilor la folderul care se creează corespunde celui de-al doilea parametru opțional funcțiile mkdir. În mod implicit, privilegiile maxime sunt atribuite – 0777.

Permisiunile sunt atribuite ca valoare octală cu un zero obligatoriu înainte. În afară de primul zero, numerele reprezintă niveluri de acces pentru proprietar, pentru grupul proprietarului, pentru toți ceilalți.

0 – acces refuzat;

1 – acces la citire;

2 – acces la scriere;

4 – acces la execuție.

Cel mai adesea, drepturile sunt specificate ca o sumă compusă, de exemplu:

7 – acces complet (1+2+4);

5 – citire și execuție (1+4).

mkdir( „folder nou”, 0777); // acces complet pentru toată lumea

Crearea mai multor subdirectoare imbricate

Puteți crea mai multe subfoldere simultan, prin simpla specificare a unui alt parametru boolean opțional – recursiv.

mkdir("folder1/folder2/newfolder" , 0777, True ); // acces complet pentru toată lumea

În acest caz, dacă nu există foldere „folder1” și „folder2”, funcția le va crea atât, cât și folderul „newfolder”. Dacă nu apar alte probleme, nu vor fi afișate mesaje de eroare și funcția va returna True.

Ștergerea unui folder

Puteți șterge un folder gol în PHP funcția rmdir. Parametrul dirname specifică, de asemenea, calea completă sau relativă către directorul de șters:

rmdir( "dosarul meu");

rmdir("folder1/folder2/myfolder");

În fiecare dintre aceste cazuri, doar folderul „myfolder” este șters. Dacă nu există niciun folder sau calea este specificată incorect, va fi afișată o eroare:

Avertisment: rmdir(myfolder): Nu există un astfel de fișier sau director în...

Ștergerea unui folder care nu este gol

Eliminarea unui director care nu este gol se face secvenţial eliminarea fișierelor atașateîntr-un folder funcția de deconectareși apoi ștergerea folder gol funcția rmdir. Puteți utiliza o funcție ca aceasta pentru a face acest lucru:

funcția my_delete_dir($mypath)(
$dir = opendir($mypath);
în timp ce (($fișier = readdir($dir)))(
dacă (este_fișier($mypath."/" .$fișier))
deconectați($mypath. „/” .$fișier);
elseif (este_dir($mypath."/" .$fișier) && ($fișier != "." ) && ($fișier != ".." ))
my_delete_dir($mypath."/" .$file);
}
closedir($dir);
rmdir($mypath);
}

my_delete_dir("dosarul meu"); // apel de funcție

Verificarea existenței unui director

Înainte de majoritatea operațiunilor cu directoare, merită să verificați dacă acestea există. În acest scop este folosit funcția file_exists.

În plus, trebuie să vă asigurați că obiectul specificat este un folder și nu un fișier - funcția is_dir. Dosarul care trebuie scanat este specificat printr-o cale relativă sau completă.

if (fișier_există(„dosarul meu”))
ecou „Dosarul specificat există”;
altfel
ecou „Dosarul specificat nu există”;

if (is_dir("dosarul meu"))
ecou "Obiect specificat pliant";
altfel
ecou „Obiectul specificat nu este un folder”;