PHP prakticky/Další operace se soubory
V PHP můžeme se soubory provádět tyto operace:
Vypsání obsahu
editovatVý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
editovatTato 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
editovatFunkce 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
editovatFunkce 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
editovatTento 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ů
editovatVelikost 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