Cet article présente principalement la solution au problème de PHP mkdir() sans autorisation d'écriture, une explication détaillée de umask et la solution au problème d'absence d'autorisation d'écriture après mkdir(). Les amis qui en ont besoin peuvent s'y référer
Lors de l'utilisation de mkdir pour créer un dossier, j'ai découvert que cette fonction avait deux paramètres. Le deuxième paramètre spécifie les autorisations pour le dossier nouvellement créé. Mais si vous utilisez mkdir('file address', 0777); directement, vous constaterez que les autorisations du nouveau dossier ne sont pas 777, mais généralement 022. Parce que lorsque mkdir définit les autorisations pour un dossier, il effectue un ET au niveau du bit avec la valeur umask (attribut d'autorisation par défaut de l'utilisateur) de l'utilisateur actuellement connecté au système d'exploitation, et la valeur résultante est la valeur d'autorisation finale .Qu'est-ce qu'umask ?
Comment obtenir les autorisations par défaut pour les fichiers que nous créons ? Comment modifier cette autorisation par défaut ? Lorsque nous nous connectons au système et créons un fichier, il y a toujours une autorisation par défaut. Alors, d'où vient cette autorisation ? C'est ce que fait umask. umask définit les autorisations par défaut pour les fichiers créés par les utilisateurs. Cela a l'effet inverse de chmod. umask définit l'autorisation "code complémentaire", tandis que chmod définit le code d'autorisation du fichier. Généralement, la valeur umask est définie dans /etc/profile, $HOME/.bash_profile ou $HOME/.profile.Comment calculer la valeur umask ?
La commande umask vous permet de définir le mode par défaut lors de la création de fichiers. Il y a un numéro correspondant dans la valeur umask pour chaque type d'utilisateur (propriétaire du fichier, utilisateur du même groupe, autres utilisateurs). . Pour les fichiers, la valeur maximale de ce nombre est 6. Le système ne vous permet pas d'accorder l'autorisation d'exécution à un fichier texte lorsque vous le créez. Vous devez utiliser la commande chmod pour augmenter cette autorisation après la création. Les répertoires permettent de définir des autorisations d'exécution, donc pour les répertoires, le nombre maximum dans umask peut aller jusqu'à 7. La forme générale de cette commande est : umask nnn, où nnn peut être compris entre 000 et 777. Nous devons juste nous rappeler que umask "enlève" le bit correspondant des autorisations. Par exemple : si la valeur umask est 022, l'autorisation de répertoire par défaut est 755 et l'autorisation de fichier par défaut est 644.Donc, si l'umask de l'utilisateur est 022 (généralement c'est la valeur par défaut), soit : 000 010 010 est égal à 777 spécifié par mkdir, soit : 111 111 111. Après le « ET », la véritable autorisation obtenue est : 022.
$oldumask=umask(0); mkdir('test',0777); umask($oldumask);
mkdir('文件地址', 0777); chmod('文件地址', 0777);
Comment résoudre l'erreur Aucun chiffreur pris en charge trouvé dans Laravel 5.1
Comment résoudre le problème fatal erreur session_start en PHP Erreur dans ()
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!