Solution aux autorisations insuffisantes de php mkdir : 1. Modifiez les autorisations par défaut du système à 777 et spécifiez des autorisations plus élevées pour mkdir ; 2. Définissez la fonction chmod pour avoir des autorisations supérieures aux autorisations par défaut du système ; le système La commande mkdir définit des autorisations supérieures à celles par défaut.
Recommandé : "Tutoriel vidéo PHP"
Problème d'autorisation avec la fonction mkdir() en php
Description du problème :
Utilisez le code php suivant pour créer un répertoire. L'autorisation attendue du répertoire est 0777, mais le résultat réel est 0755
mkdir('./aa/',0777);
Analyse. et résultats 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 soit 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/
Changez les autorisations par défaut du système en 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 du 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 afin d'éviter le problème. impact du système umask
mkdir('./xw/'); chmod('./xw/',0777);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!