mkdir în PHP

Directoare și căi PHP 4+ (creare recursivă: PHP 5.0+)

Creează un director nou, opțional cu toate directoarele părinte care lipsesc.

Sintaxă
mkdir(string $directory, int $permissions = 511, bool $recursive = false, $context = null): bool

Ce face mkdir

mkdir creează un director. Implicit creează doar ultimul nivel din cale: dacă directorul părinte nu există, funcția eșuează. Cu al treilea parametru true creează toată calea, de exemplu uploads/2026/10.

Permisiunile se scriu în octal, cu 0 în față: 0755. Valoarea implicită 511 este 0777 scris în zecimal. Permisiunile finale sunt reduse de setarea umask a serverului.

Parametri

Parametru Descriere
$directory Calea directorului de creat.
$permissions Opțional. Permisiunile în octal, de exemplu 0755. Ignorat pe Windows.
$recursive Opțional. true creează și directoarele părinte care lipsesc.
$context Opțional. Un context de stream, rar folosit.

Ce returnează

true dacă directorul a fost creat, false la eroare (împreună cu un avertisment).

Exemple

Exemplul 1: Un director simplu

<?php
var_dump(mkdir("imagini"));
var_dump(is_dir("imagini"));

Rezultat

bool(true)
bool(true)

Exemplul 2: Toată calea, pe ani și luni

Fără true la final, apelul ar eșua, pentru că uploads și uploads/2026 nu există încă.

<?php
$cale = "uploads/2026/10";

mkdir($cale, 0755, true);
var_dump(is_dir($cale));

Rezultat

bool(true)

Exemplul 3: Creare sigură, fără avertismente

<?php
$cale = "exporturi";

foreach ([1, 2] as $incercare) {
    if (!is_dir($cale) && !mkdir($cale, 0755, true)) {
        exit("Nu am putut crea $cale");
    }
    echo "Încercarea $incercare: directorul există\n";
}

Rezultat

Încercarea 1: directorul există
Încercarea 2: directorul există

Greșeli frecvente

  • Apelezi mkdir pe un director care există deja și primești Warning: mkdir(): File exists. Verifică întâi cu is_dir.
  • Creezi a/b/c fără al treilea parametru true și primești No such file or directory.
  • Scrii permisiunile fără zero în față: mkdir($d, 755). Numărul 755 în zecimal înseamnă cu totul alte drepturi. Scrie 0755.

Comenzi înrudite

  • is_dir: Verifică dacă o cale indică un director existent.
  • rmdir: Șterge un director gol.
  • chmod: Schimbă permisiunile unui fișier sau director (cine îl poate citi, scrie sau rula).
  • scandir: Returnează lista fișierelor și directoarelor dintr-un director, sortată alfabetic.