Maison >développement back-end >tutoriel php >La fonction mkdir() de PHP crée une méthode de définition des autorisations plus sûre pour les dossiers

La fonction mkdir() de PHP crée une méthode de définition des autorisations plus sûre pour les dossiers

高洛峰
高洛峰original
2016-12-21 15:17:181501parcourir

Description du problème :
Utilisez le code php suivant pour créer un répertoire. Les autorisations de répertoire attendues sont 0777, mais le résultat réel est 0755

mkdir('./aa/',0777);

Résultats de l'analyse et des tests :

1 Les autorisations de répertoire spécifiées par la fonction .mkdir() ne peuvent être inférieures ou égales aux autorisations par défaut définies par l'umask système.

Par exemple, l'umask par défaut de Linux est généralement 0022, c'est-à-dire que l'autorisation par défaut pour créer un répertoire est 0755, donc à ce moment php mkdir('./aa/',0777) obtient l'autorisation du répertoire à 0755.

xw@xw-X201:~/Desktop/dd/aa$ umask
0022
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0755);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0747);"
xw@xw-X201:~/Desktop/dd/aa$ ll
总用量 20
drwxrwxrwx 5 xw xw 4096 2012-06-01 11:58 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxr-xr-x 2 xw xw 4096 2012-06-01 11:57 xw/
drwxr-xr-x 2 xw xw 4096 2012-06-01 11:58 xw1/
drwxr--r-x 2 xw xw 4096 2012-06-01 11:58 xw2/

Modifiez les autorisations par défaut du système à 777, mkdir() peut spécifier des autorisations plus élevées

xw@xw-X201:~/Desktop/dd/aa$ umask 000
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ ll
总用量 12
drwxrwxrwx 3 xw xw 4096 2012-06-01 12:08 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxrwxrwx 2 xw xw 4096 2012-06-01 12:08 xw2/

2. La fonction chmod() n'est pas affectée par l'umask système et peut définir des autorisations supérieures aux autorisations par défaut du système.

xw@xw-X201:~/Desktop/dd/aa$ umask
0022
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw1/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw2/');"
xw@xw-X201:~/Desktop/dd/aa$ php -r "mkdir('./xw3/');chmod('./xw3/',0777);"
xw@xw-X201:~/Desktop/dd/aa$ ll
总用量 20
drwxrwxrwx 5 xw xw 4096 2012-06-01 12:12 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw1/
drwxr-xr-x 2 xw xw 4096 2012-06-01 12:11 xw2/
drwxrwxrwx 2 xw xw 4096 2012-06-01 12:12 xw3/

3. La commande mkdir du système peut définir des autorisations supérieures à la valeur par défaut.

xw@xw-X201:~/Desktop/dd/aa$ umask
0022
xw@xw-X201:~/Desktop/dd/aa$ mkdir -m0777 xw
xw@xw-X201:~/Desktop/dd/aa$ ll
总用量 12
drwxrwxrwx 3 xw xw 4096 2012-06-01 12:18 ./
drwxr-xr-x 6 xw xw 4096 2012-06-01 11:26 ../
drwxrwxrwx 2 xw xw 4096 2012-06-01 12:18 xw/

Résumé :

Si php souhaite créer un répertoire avec des autorisations de lecture et d'écriture, il est préférable d'utiliser le code suivant. N'utilisez pas directement la fonction mkdir pour spécifier les autorisations. évitez l'impact de l'umask système

mkdir('./xw/');
chmod('./xw/',0777);

Pour plus d'articles connexes sur la fonction mkdir() de PHP pour créer des dossiers et une méthode de définition des autorisations plus sûre, veuillez faire attention au site Web chinois de PHP !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn