umask în PHP

Citește sau schimbă masca de permisiuni aplicată fișierelor și directoarelor nou create.

Sintaxă
umask(?int $mask = null): int

Ce face umask

Când creezi un fișier sau un director, permisiunile cerute sunt reduse de umask: fiecare bit din mască elimină dreptul corespunzător. Cu masca obișnuită 0022, un mkdir($d, 0777) creează de fapt un director cu 0755.

Fără parametru, funcția doar returnează masca curentă. Pe servere care rulează mai multe scripturi în același proces, schimbarea afectează și celelalte cereri, deci e mai sigur să folosești chmod după creare.

Parametri

Parametru Descriere
$mask Opțional. Masca nouă, în octal, de exemplu 0027.

Ce returnează

Masca de dinainte de apel.

Exemple

Exemplul 1: Efectul măștii asupra unui director nou

<?php
$veche = umask(0027);
mkdir("privat", 0777);
umask($veche);

printf("Permisiuni: %o", fileperms("privat") & 0777);

Rezultat

Permisiuni: 750

Greșeli frecvente

  • Te miri că mkdir($d, 0777) creează un director cu 0755. Așa funcționează masca. Dacă chiar ai nevoie de alte permisiuni, apelează chmod după creare.

Comenzi înrudite

  • chmod: Schimbă permisiunile unui fișier sau director (cine îl poate citi, scrie sau rula).
  • mkdir: Creează un director nou, opțional cu toate directoarele părinte care lipsesc.
  • fileperms: Returnează permisiunile unui fișier, ca număr; se afișează de obicei în octal, de exemplu 644.