Přeskočit na obsah

PHP prakticky/Další operace se soubory

Z Wikiknih

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

Vypsání obsahu

[editovat | editovat zdroj]

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");

Odstranění souboru

[editovat | editovat zdroj]

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");

Přejmenování souboru

[editovat | editovat zdroj]

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");

Zkopírování souboru

[editovat | editovat zdroj]

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");

Výpis obsahu složky

[editovat | editovat zdroj]

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 />";
}

Zjištění atributů

[editovat | editovat zdroj]

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