PHP Mkdir autorizzazione non funziona

April 13

PHP fornisce una funzione chiamata "mkdir" che permette di creare una nuova directory. Un argomento opzionale specifica il valore numerico dei permessi da assegnare alla nuova directory. Ad esempio, i permessi di "0777" forniscono lettura, scrittura ed esecuzione per il "titolare", "gruppo" e "altro". Ci sono diversi casi in cui apparirà assegnazione il permesso con la funzione "mkdir" come se non funziona perché la nuova directory non ha le stesse autorizzazioni si passati alla funzione.

Non Applicabile a Windows

L'elenco di autorizzazioni fornite alla funzione "mkdir" sono validi solo sui file system basati su Linux. Ciò significa che non è possibile associare i permessi con una directory si crea sotto Windows. Se si passa di autorizzazioni con la funzione "mkdir" sotto Windows, PHP li ignora semplicemente.

Account utente predefinito

Ricordate che uno script eseguito su un server Web da un browser eseguito con l'account utente predefinito sul server Web, ad esempio "www-data," non con l'account utente. Se le autorizzazioni di directory non funzionano, è possibile che si sta testando uno script con il proprio account anziché l'account utente predefinito. È possibile verificare lo script come l'utente predefinito digitando "su www-data" ed esplorare i permessi di directory assegnate a tale utente.

Maschera directory

Se le autorizzazioni risultanti di una nuova directory sono diversi da quello che è stato superato, può essere causa di una maschera di directory applicata ai permessi. La maschera è mantenuto dal server Web, non per PHP. Per aggirare la maschera, utilizzare la funzione "umask" per impostare la maschera a zero, creare la directory con "mkdir" e modificare le autorizzazioni sulla directory con la funzione "chmod".

Per esempio:

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

Assegnazione ricorsivo

La funzione "mkdir" prende un secondo argomento opzionale che crea le directory ricorsivamente annidate. Quando si assegnano le autorizzazioni di directory in modo ricorsivo, le autorizzazioni non possono essere eseguiti nel modo più corretto e si potrebbe ottenere risultati diversi da quello previsto. Per garantire l'ordine corretto, utilizzare la funzione "chmod" per assegnare le autorizzazioni di directory alla nuova directory dopo aver creato con la funzione "mkdir".

Per esempio:

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