Skontrolujte, či existuje súbor php. Ako skontrolovať, či súbor existuje v PHP

  • 08.05.2019

Požadovaným parametrom pre túto funkciu je cesta, kde je určená cesta k vytvorenému adresáru.

mkdir ( "nový priečinok");

Ak zadáte priečinok týmto spôsobom, bude vytvorený v rovnakom adresári, z ktorého bol spustený php skript. Ak potrebujete vytvoriť adresár na inom mieste, môžete určiť relatívnu cestu k vytvorenému priečinku alebo celú cestu z koreňového adresára lokality.

mkdir ( "../nový priečinok"); // o úroveň nižšie

mkdir ("/ priečinok1 / priečinok2 / nový priečinok"); // úplná cesta

V poslednom príklade je nevyhnutnou podmienkou existencia podadresárov „folder1“ a „folder2“. Ak tam nie sú, funkcia v tomto formulári nebude schopná vytvoriť priečinok a vráti chybu:

Varovanie: mkdir (): Žiadny takýto súbor alebo adresár nie je v ...

Ak je úspešná, funkcia vráti hodnotu True. Ak nebol vytvorený žiadny balík, vráti sa False.

if (mkdir ("nový priečinok"))
ozvena „Priečinok bol úspešne vytvorený“;
inak
ozvena „Priečinok nebol vytvorený“;

Túto funkciu by ste však nemali používať bez kontroly prítomnosti priečinka, pretože server bude stále zobrazovať chybu, že priečinok nebolo možné vytvoriť.

Priradenie práv pri vytváraní priečinka

Druhý voliteľný parameter funkcie mkdir je zodpovedný za pridelenie práv k vytvorenému priečinku. V predvolenom nastavení sú pridelené maximálne privilégiá - 0777.

Povolenia sa prideľujú ako osmičková hodnota s povinnou nulou. Okrem prvej nuly čísla predstavujú úrovne prístupu pre vlastníka, pre skupinu vlastníkov, pre všetkých ostatných.

0 - prístup odmietnutý;

1 - prístup na čítanie;

2 - prístup na zápis;

4 - prístup na vykonanie.

Najčastejšie sú práva stanovené zloženou sumou, napríklad:

7 - plný prístup (1 + 2 + 4);

5 - čítanie a vykonávanie (1 + 4).

mkdir ( „nový priečinok“, 0777); // plný prístup pre všetkých

Vytváranie viacerých vnorených podadresárov

Môžete vytvoriť viac podpriečinkov naraz jednoduchým zadaním ďalšieho voliteľného booleovského parametra, rekurzívneho.

mkdir ("priečinok1 / priečinok2 / nový priečinok", 0777, pravda); // plný prístup pre všetkých

V takom prípade, ak neexistujú žiadne priečinky „priečinok1“ a „priečinok2“, funkcia vytvorí oba tieto priečinky a priečinok „nový priečinok“. Ak nie sú žiadne ďalšie problémy, nezobrazia sa žiadne chybové správy a funkcia vráti hodnotu True.

Odstraňuje sa priečinok

Prázdny priečinok v PHP je možné odstrániť pomocou funkcie rmdir. Parameter dirname tiež určuje úplnú alebo relatívnu cestu k adresáru, ktorý sa má vymazať:

rmdir ( „môj priečinok“);

rmdir ("priečinok1 / priečinok2 / môj priečinok");

V každom z týchto prípadov sa vymaže iba priečinok „myfolder“. Ak neexistuje žiadny priečinok alebo je cesta zadaná nesprávne, zobrazí sa chyba:

Varovanie: rmdir (myfolder): Žiadny takýto súbor alebo adresár nie je v ...

Odstraňuje sa neprázdny priečinok

Odstránenie neprázdneho adresára sa vykonáva postupným odstraňovaním pripojených súborov v priečinku pomocou funkcie unlink a následným odstránením prázdneho priečinka pomocou funkcie rmdir. Môžete to urobiť podobnou funkciou:

function my_delete_dir ($ mypath) (
$ dir \u003d opendir ($ mypath);
while (($ file \u003d readdir ($ dir))) (
if (is_file ($ mypath. "/". $ file))
odpojiť ($ mypath. „/“. $ súbor);
elseif (is_dir ($ mypath. "/". $ file) && ($ file! \u003d ".") && ($ file! \u003d ".."))
my_delete_dir ($ mypath. "/". $ file);
}
closedir ($ dir);
rmdir ($ mypath);
}

my_delete_dir ("myfolder"); // volanie funkcie

Kontrola existencie adresára

Pred väčšinou operácií s adresármi stojí za to skontrolovať, či existujú. Používa sa na to funkcia file_exists.

Ďalej sa musíte ubezpečiť, že zadaný objekt je priečinok, a nie súbor - funkcia is_dir. Priečinok, ktorý sa má skontrolovať, je určený relatívnou alebo úplnou cestou.

if (file_exists ("myfolder"))
ozvena „Zadaný priečinok existuje“;
inak
ozvena „Zadaný priečinok neexistuje“;

if (is_dir ("myfolder"))
ozvena "Priečinok určeného objektu";
inak
ozvena "Zadaný objekt nie je priečinok";

Sú chvíle, kedy musíte skontrolovať, či konkrétny súbor existuje alebo nie, napríklad aby ste so súborom mohli následne vykonať nejakú akciu.

Na túto otázku som narazil aj pri vývoji modulu. Našiel som dve možnosti riešenia problému.

Kontrola existencie súboru pomocou adresy URL

PHP má funkciu “ fopen", Pomocou ktorého môžete otvoriť zadanú URL.

Čo robíme? Pokúšame sa otvoriť súbor, a ak uspejeme, potom súbor existuje, ale inak súbor neexistuje.

Implementácia:

Čo však v prípade, že nemáme jeden súbor, ale niekoľko takpovediac viacerých odkazov? Táto úloha bola presne to, čomu som spočiatku čelil. Riešenie tohto problému je nasledovné:

V takom prípade dostaneme zoznam iba tých súborov, ktoré existujú.

Kontrola existencie lokálneho súboru

Slovo „miestne“ znamená, že skript a súbory, ktoré sa majú skontrolovať, sa nachádzajú na rovnakom serveri. Ak máte pomerne veľké množstvo odkazov, táto možnosť je najlepšia na vyriešenie problému, pretože nevyžadujeme požiadavku na server tretej strany, ale skenujeme určené adresáre.

Táto metóda využíva funkciu „file_exists“ a analogicky s predchádzajúcou verziou jednoducho nahrádza časť skriptu:

To isté pre rad odkazov:

Čo to stojí za to poznámka? Skutočnosť, že táto metóda je vhodná na prechádzanie cez súbory umiestnené v našom súborovom systéme. Preto je vhodné označiť všetky odkazy relatívne.

Mimochodom, keď som urobil jednu z objednávok, týmto spôsobom som dokázal naskenovať asi 135 000 súborov za pár sekúnd.

Vďaka rozsiahlemu použitiu databáz sa konvenčný súborový systém nestal irelevantným. Písanie a čítanie súborov je stále významnou súčasťou programovania.

Algoritmy na kontrolu existencie súboru vám umožňujú vyhnúť sa chybám počas vykonávania kódu. Funkcia PHP file_exists ponúka jednoduché riešenie na kontrolu existencie súboru alebo adresára.

Syntax a použitie súboru_exists

Výsledok funkcie je pravdivý alebo nepravdivý. Jediným parametrom je názov súboru a cesta k nemu. Výsledok funkcie sa uloží do vyrovnávacej pamäte, pretože ak PHP file_exists nefunguje, ale súbor v skutočnosti existuje, potom ide o chybu algoritmu.

Použitím funkcie clearstatcache () sa môžete vyhnúť mnohým chybám pri skúmaní stavu dostupného súborového systému. Je však potrebné mať na pamäti, že na neexistujúcom súbore PHP vráti file_exists hodnotu false, kým sa nevytvorí požadovaný súbor, a potom vráti hodnotu true, aj keď už bol odstránený.

Správna kombinácia funkcie clearstatcache () a funkcií súvisiacich so súborovým systémom (napríklad is_writable (), is_readable (), is_executable (), is_file (), is_dir () a ďalšie) zabráni „skrytým“ chybám pri vykonávaní skriptu.

Ukladanie do pamäte cache výrazne zlepšuje výkon systému, ale v niektorých prípadoch môže u dôležitých súborov vytvoriť skutočne neplatný výsledok a spôsobiť vážnu a ťažko nájditeľnú chybu pri behu.

Funkčný parameter PHP file_exists

PHP je možné inštalovať na rôzne výpočtové platformy, a preto sa názvy a cesty a súbory môžu líšiť.

Dokumentácia vyhlasuje, že PHP sa overuje na základe UID / GID a nie efektívnych identifikátorov. Pri vývoji algoritmu na používanie PHP file_exists by ste mali venovať pozornosť nielen správnym lomkám (dopredu alebo dozadu), kódovaniu cesty k súboru a názvu samotného súboru, ale tiež skontrolovať prítomnosť požadovaného prípadu, správne znaky, prístupové práva a ďalšie okolnosti.

Negatívny výsledok môže byť ovplyvnený kódovaním súboru skriptu, môže byť potrebné previesť reťazec znakov získaný z databázy.

Využitie funkcie v praxi

Používanie skriptov PHP sa výrazne líši. To neznamená, že PHP file_exists sa používa výlučne na ukladanie systémových informácií, dátových súborov, objektov alebo dynamicky vykreslených obrázkov.

Vyskytujú sa časté prípady použitia streamovaného vytvárania veľkého množstva dočasných informácií, ktoré nie je efektívne okamžite umiestniť do databázy. Na stránku sa môžu zhromažďovať informácie od rôznych návštevníkov a len po predbežnom spracovaní po určitú dobu by sa mali potrebné informácie umiestniť do databázových tabuliek.

Čítanie systémových súborov môže spôsobiť ukladanie do pamäte cache pri obnovení viacerých stránok alebo nesprávne akcie návštevníkov. V skutočnosti existuje veľa situácií, ale pri správnom použití vám funkcia umožňuje napísať bezpečný a spoľahlivý kód.

Sú chvíle, kedy musíte skontrolovať, či konkrétny súbor existuje alebo nie, napríklad aby ste so súborom mohli následne vykonať nejakú akciu.

Na túto otázku som narazil aj pri vývoji modulu. Našiel som dve možnosti riešenia problému.

Kontrola existencie súboru pomocou adresy URL

PHP má funkciu “ fopen", Pomocou ktorého môžete otvoriť zadanú URL.

Čo robíme? Pokúšame sa otvoriť súbor, a ak uspejeme, potom súbor existuje, ale inak súbor neexistuje.

Implementácia:

Čo však v prípade, že nemáme jeden súbor, ale niekoľko takpovediac viacerých odkazov? Táto úloha bola presne to, čomu som spočiatku čelil. Riešenie tohto problému je nasledovné:

V takom prípade dostaneme zoznam iba tých súborov, ktoré existujú.

Kontrola existencie lokálneho súboru

Slovo „miestne“ znamená, že skript a súbory, ktoré sa majú skontrolovať, sa nachádzajú na rovnakom serveri. Ak máte pomerne veľké množstvo odkazov, táto možnosť je najlepšia na vyriešenie problému, pretože nevyžadujeme požiadavku na server tretej strany, ale skenujeme určené adresáre.

Táto metóda využíva funkciu „file_exists“ a analogicky s predchádzajúcou verziou jednoducho nahrádza časť skriptu:

To isté pre rad odkazov:

Čo to stojí za to poznámka? Skutočnosť, že táto metóda je vhodná na prechádzanie cez súbory umiestnené v našom súborovom systéme. Preto je vhodné označiť všetky odkazy relatívne.

Mimochodom, keď som urobil jednu z objednávok, týmto spôsobom som dokázal naskenovať asi 135 000 súborov za pár sekúnd.