unlink în PHP

Șterge un fișier de pe disc.

Sintaxă
unlink(string $filename, $context = null): bool

Ce face unlink

unlink este funcția PHP pentru ștergerea unui fișier. Numele vine de la comanda Unix cu același nume. Fișierul este șters definitiv, nu ajunge în coșul de gunoi.

Dacă fișierul nu există, primești un avertisment și rezultatul false. Pentru directoare folosește rmdir.

Parametri

Parametru Descriere
$filename Calea fișierului de șters.
$context Opțional. Un context de stream.

Ce returnează

true dacă fișierul a fost șters, altfel false.

Exemple

Exemplul 1: Ștergerea unui fișier

<?php
file_put_contents("vechi.txt", "date vechi");

var_dump(unlink("vechi.txt"));
var_dump(file_exists("vechi.txt"));

Rezultat

bool(true)
bool(false)

Exemplul 2: Șterge doar dacă fișierul există

<?php
$fisier = "export.csv";

if (is_file($fisier)) {
    unlink($fisier);
    echo "Fișier șters";
} else {
    echo "Nu era nimic de șters";
}

Rezultat

Nu era nimic de șters

Exemplul 3: Golirea cache-ului

<?php
mkdir("cache");
foreach (["acasa", "blog", "contact"] as $pagina) {
    file_put_contents("cache/$pagina.html", "<p>$pagina</p>");
}

foreach (glob("cache/*.html") as $fisier) {
    unlink($fisier);
}

echo count(glob("cache/*.html")) . " fișiere rămase";

Rezultat

0 fișiere rămase

Greșeli frecvente

  • Cauți o funcție delete sau remove. În PHP, fișierele se șterg cu unlink.
  • Ștergi un fișier care nu există și primești Warning: unlink(...): No such file or directory. Verifică întâi cu is_file.
  • Pui numele fișierului direct din $_GET. Un vizitator poate trimite ../config.php. Folosește basename pe numele primit.

Comenzi înrudite

  • rmdir: Șterge un director gol.
  • file_exists: Verifică dacă un fișier sau un director există pe disc.
  • glob: Găsește fișierele ale căror căi se potrivesc cu un tipar, de exemplu poze/*.jpg.
  • basename: Returnează doar numele fișierului dintr-o cale, fără directoare.