rmdir în PHP

Șterge un director gol.

Sintaxă
rmdir(string $directory, $context = null): bool

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 rmdir pe un director care mai are fișiere și primești Directory not empty.
  • Folosești unlink pe un director. unlink șterge doar fișiere, pentru directoare este rmdir.
  • 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.