Ce face rmdir
rmdir șterge doar directoare goale. Dacă directorul conține fișiere sau alte directoare, funcția eșuează cu avertismentul Directory not empty.
Pentru a șterge un director cu tot conținutul, ștergi întâi fișierele cu unlink și subdirectoarele (tot cu rmdir), de la cel mai adânc nivel spre exterior.
Parametri
| Parametru | Descriere |
|---|---|
$directory |
Calea directorului de șters. |
$context |
Opțional. Un context de stream. |
Ce returnează
true la succes, false la eroare.
Exemple
Exemplul 1: Ștergerea unui director gol
<?php
mkdir("temporar");
var_dump(rmdir("temporar"));
var_dump(is_dir("temporar"));
Rezultat
bool(true)
bool(false)
Exemplul 2: Ștergerea unui director cu tot conținutul
Funcția se apelează pe ea însăși pentru fiecare subdirector. array_diff scoate intrările speciale . și ...
<?php
function sterge_director(string $cale): void
{
foreach (array_diff(scandir($cale), [".", ".."]) as $nume) {
$complet = "$cale/$nume";
is_dir($complet) ? sterge_director($complet) : unlink($complet);
}
rmdir($cale);
}
mkdir("cache/pagini", 0777, true);
file_put_contents("cache/index.html", "...");
file_put_contents("cache/pagini/contact.html", "...");
sterge_director("cache");
var_dump(file_exists("cache"));
Rezultat
bool(false)
Greșeli frecvente
- Încerci
rmdirpe un director care mai are fișiere și primeștiDirectory not empty. - Folosești
unlinkpe un director.unlinkșterge doar fișiere, pentru directoare estermdir. - Construiești calea de șters din date primite de la utilizator. O greșeală poate șterge alt director. Verifică întâi calea cu
realpath.
Comenzi înrudite
mkdir: Creează un director nou, opțional cu toate directoarele părinte care lipsesc.unlink: Șterge un fișier de pe disc.scandir: Returnează lista fișierelor și directoarelor dintr-un director, sortată alfabetic.realpath: Transformă o cale relativă într-o cale absolută, fără ../ și fără scurtături.