mkdir

mkdir($cesta, $prava, $vnorene, $kontext)

Vytvoří složku a vrátí true, při chybě false s varováním. S třetím parametrem true založí i chybějící nadřazené složky.

Parametry

  • $cesta – cesta k nové složce.
  • $prava – nepovinný, práva na Linuxu zapsaná osmičkově (s nulou na začátku). Výchozí je 0777, výsledek ještě omezí nastavení umask.
  • $vnorene – nepovinný, výchozí false. S true založí celou cestu.
  • $kontext – nepovinný, kontext ze stream_context_create().

Příklady

$slozka = sys_get_temp_dir() . "/garth-slozka";
var_dump(mkdir($slozka)); // bool(true)
// existující složka: false a varování (tady potlačené @)
var_dump(@mkdir($slozka)); // bool(false)
// vnořené složky najednou
var_dump(mkdir($slozka . "/2026/10", 0755, true)); // bool(true)
// bez třetího parametru chybějící nadřazená složka: false a varování
var_dump(@mkdir($slozka . "/a/b")); // bool(false)
// založení bez chyby, i když ji mezitím založí jiný požadavek
$cesta = $slozka . "/nahrane";
if (!is_dir($cesta) && !mkdir($cesta, 0755, true) && !is_dir($cesta)) {
    echo "Složku nejde založit";
}
var_dump(is_dir($cesta)); // bool(true)
rmdir($cesta);
rmdir($slozka . "/2026/10");
rmdir($slozka . "/2026");
rmdir($slozka);

Na co si dát pozor

  • Práva se zapisují osmičkově s nulou na začátku (0755). Zápis 755 bez nuly je jiné číslo a složka dostane nesmyslná práva.
  • Výsledná práva omezí nastavení umask serveru, z 0777 tak obvykle vznikne 0755. Na Windows se práva nepoužijí.
  • Na existující složku vypíše varování a vrátí false. Před založením testujte is_dir(), případně jako v ukázce i po neúspěchu.
  • Názvy složek nesestavujte ze vstupu od uživatele.

Příbuzné funkce:
rmdir()
is_dir()
is_writable()
chmod()