Mazání souborů založených webserverem¶
Soubory zapsané webovou aplikací jsou založeny s vlastníkem www-data, uživatelem, pod kterým běží webserver. Nelze je tedy obvykle odstranit přes FTP, protože FTP uživatel se od tohoto liší. Obvykle tento případ nastává při potřebě promazat adresář s obsahem typu cache nebo sessions. FTP uživatel ale bývá členem skupiny www-data. Aby bylo možné takové soubory odstranit, je třeba, aby byly zapisovatelné skupinou a nadřazené adresáře rovněž. Pokud nelze nastavit přímo ve webové aplikaci, s jakými právy se mají soubory ukládat, lze pomocí PHP práva změnit na již vytvořených.
Změna práv¶
Pro jednotlivý soubor¶
<?php chmod "cesta/k/souborum/soubor.txt", 0664); ?>
Pro celý obsah adresáře:
`<?php
$pathname = "cesta/k/souborum";
$filemode = 0664;
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname));
foreach($iterator as $item) {
chmod($item, $filemode);
}
?>`
Poté by již neměl být problém soubory odstranit pomocí FTP.
Deleting files using PHP¶
Další možností je odstranění přímo pomocí PHP skriptu, pod uživatelem www-data, pod kterým byly vytvořeny. Promazání adresáře lze provést například takto:
<?php
$dir = "cesta/k/souborum";
$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
$file->isDir() ? rmdir($file) : unlink(realpath($file));
}
return true;
?>
Aby tento skript promazal obsah požadované složky, musí být všechny adresáře v cestě zapisovatelné uživatelem www-data.
Shrnutí¶
Pokud žádný z výše uvedených postupů nepřinese požadovaný výsledek, případně je souborů v adresáři extrémní množství, kontaktujte s požadavkem na odstranění technickou podporu.