Mazání souborů založených webserverem

Technicka podpora
2020-08-07 20:33

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ím 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.

Průměrné hodnocení: 5 (1 hlas)

K tomuto záznamu nemůžete připojit komentář.