PHP Mkdir Tillatelse fungerer ikke

PHP gir en funksjon som heter "mkdir" som lar deg opprette en ny katalog. Et valgfritt argument angir den numeriske verdien av tillatelser som skal tildeles den nye katalogen. For eksempel tillatelser "0777" gir lese, skrive og utføre tillatelser for "eier", "gruppe" og "andre". Det er flere tilfeller der tillatelse oppdraget med "mkdir" funksjonen vil vises som om det ikke fungerer fordi den nye katalogen ikke har de samme rettighetene du sendes til funksjonen.

Ikke relevant til Windows

Listen over tillatelser du leverer til "mkdir" -funksjonen er bare gyldig på Linux-baserte filsystemer. Dette betyr at du ikke kan knytte tillatelser med en katalog du oppretter under Windows. Hvis du passerer tillatelser med "mkdir" -funksjonen under Windows, PHP bare ignorerer dem.

Standard User Account

Husk at et skript kjøres på en webserver fra en nettleser kjører under standard brukerkonto på webserveren som "www-data", som ikke er under din brukerkonto. Hvis mapperettigheter ikke fungerer, kan det være fordi du tester et skript på kontoen din i stedet for standard brukerkonto. Du kan teste skriptet som standard brukernavn ved å skrive "su www-data" og utforske mapperettigheter tildelt den brukeren.

Directory Mask

Hvis de resulterende tillatelsene til en ny katalog er forskjellig fra hva du har bestått, kan det være på grunn av en katalog maske påføres tillatelsene. Masken blir vedlikeholdt av webserveren, ikke av PHP. For å omgå masken, bruke "umask" -funksjonen for å sette masken til null, lage katalogen med "mkdir" og endre mapperettigheter med "chmod" -funksjonen.

For eksempel:

<? Php
$ Save = umask (0);
if (mkdir ($ newdir)) chmod ($ newdir, 0755);
umask ($ spare);
?>

rekursiv Assignment

Den "mkdir" funksjonen tar en andre valgfritt argument som skaper nestede kataloger rekursivt. Når du tilordner mapperettigheter rekursivt, kan tillatelsene ikke utføres i riktig rekkefølge, og du kan få forskjellige resultater fra det du forventet. For å sikre riktig rekkefølge, bruk "chmod" -funksjonen til å tilordne mapperettigheter til den nye katalogen når du har opprettet den med "mkdir" -funksjonen.

For eksempel:

<? Php
if (mkdir ($ newdir, 0755, true)) chmod ($ newdir, 0755);
?>