Přeskočit obsah

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