PHP prakticky/Další operace se soubory

Z Wikiknih

Přejít na: navigace, hledání

V PHP můžeme se soubory provádět tyto operace:

Obsah

[editovat] Vypsání obsahu

Výsledek je podobný, jako při použití funkcí v kapitole Upravování souborů, ale s tím rozdílem, že soubor nemusíme zvlášť otevírat a zavírat. Nevýhodou je, že obsah souboru se rovnou vypíše a nemůžeme tedy s výsledkem dále pracovat...

readfile("soubor.txt");

[editovat] Odstranění souboru

Tato funkce jednoduše smaže soubor. Někdy nám v něm mohou zabránit nedostatečná oprávnění, například při vybrání souboru na cizím webu. V případě že soubor s původním názvem neexistuje, vypíše se chybová hláška.

 unlink("soubor.txt");

[editovat] Přejmenování souboru

Funkce přejmenuje soubor. V případě že soubor s původním názvem neexistuje, vypíše se chybová hláška.

 rename("puvodninazev.txt","novynazev.txt");

[editovat] Zkopírování souboru

Funkce zkopíruje soubor. Můžeme kopírovat mezi složkami, nebo i v rámci jedné složky. V tom případě ovšem musíme zadat jiný než původní název.

 copy("puvodnisoubor.txt","slozka/novysoubor.txt");

[editovat] Výpis obsahu složky

Tento skript vypíše soubory a složky ze zadané složky. Parametrem je složka pro vypsání. (U složky nacházející se ve stejné složce jako vypisující skript stačí zadat název. Pro složku v níž je vypisující skript zadejte tečku a pro složku nadřazenou složce s vypisujícím souborem dvě tečky)

 $slozka = opendir("."); // Tento skript vypíše obsah složky v níž je uložen
 while ($soubor = readdir($slozka)){
  echo $soubor."<br>";
 }

[editovat] Zjištění atributů

Velikost souboru zjistí funkce filesize(): (Následující skript vypíše velikost souboru soubor.txt v Bytech)

 $velikost=filesize("soubor.txt");
 echo $velikost;

Datum vytvoření souboru zjistí funkce filectime(), ta ji však vrátí v počtu sekund, které uplynuly od počátku internetu. Toto číslo upravíme do čitelného formátu funkcí strftime().

 $vytvoreno=filectime($soubor);
 echo strftime("%d/%m/%Y %H:%M",$vytvoreno);

Datum změny souboru zjistí funkce filemtime(), ta ji však také vrátí v počtu sekund, které uplynuly od počátku internetu. Toto číslo musíme opět upravit do čitelného formátu funkcí strftime().

 $zmeneno=filemtime($soubor);
 echo strftime("%d/%m/%Y %H:%M",$zmeneno);

Funkce PHP pro práci se soubory bývají na webhostinzích omezeny na práci v daném adresáři pomocí konfigurační direktivy PHP open_basedir a na práci se soubory vlastněnými autorem skriptu direktivou safe_mode. Ty se často kombinují pro maximální zabezpečení serveru před jeho uživateli.

V některých případech je možné číst soubory z jiných serverů, například z adresy http://server/soubor.txt. Protože se ale jazyk PHP provádí na serveru, nemůže pracovat se soubory u klienta. Přenos souborů mezi serverem a návštěvníkem je přesto možný, viz. kapitola Upload a download