PHP fournit une fonction appelée " mkdir " qui vous permet de créer un nouveau répertoire. Un argument facultatif spécifie la valeur numérique des permissions à attribuer à ce nouveau répertoire . Par exemple , les permissions de " 0777 " fournissent lire, écrire et exécuter des autorisations pour le " propriétaire ", " groupe " et " autre . " Il ya plusieurs cas dans lesquels attribution d'autorisation avec la fonction " mkdir " apparaîtra comme si ça ne marche pas parce que le nouveau répertoire ne possède pas les mêmes autorisations que vous avez passé à la fonction. Non applicable à Windows
La liste des permissions que vous fournissez à la fonction " mkdir " ne sont valables que sur les systèmes de fichiers Linux. Cela signifie que vous ne pouvez pas associer des autorisations avec un répertoire que vous créez sous Windows. Si vous passez autorisations avec la fonction " mkdir " sous Windows , PHP les ignore tout simplement .
Default User Account
Rappelez-vous qu'une exécution du script sur un serveur Web à partir de un navigateur s'exécute sous le compte d'utilisateur par défaut sur le serveur Web, tel que " www-data ", pas sous votre compte utilisateur. Si les autorisations de répertoire ne fonctionnent pas, il se peut que vous testez un script sur votre compte au lieu du compte d'utilisateur par défaut . Vous pouvez tester le script en tant qu'utilisateur par défaut en tapant "su www -data" et d'explorer les permissions du répertoire assignées à cet utilisateur.
Annuaire Masque
Si les autorisations d'un nouveau répertoire qui en résultent sont différent de ce que vous avez réussi , il peut être à cause d'un masque de répertoire appliquée aux autorisations. Le masque est mis à jour par le serveur Web , et non pas par PHP . Pour contourner le masque , utilisez la fonction " umask " pour définir le masque à zéro, créer le répertoire en utilisant " mkdir " et changer les permissions du répertoire en utilisant la fonction « chmod »
Par exemple : .
< php $ save = umask (0); ? if ( mkdir ($ newdir ) ) chmod ( newdir $ , 0755 ) ; umask ($ save) ; ? >
< br > Affectation récursive
La fonction " mkdir " prend un deuxième argument optionnel qui crée des répertoires imbriqués de manière récursive. Lorsque vous attribuez les permissions des répertoires de manière récursive , les autorisations ne peuvent être exécutées dans le bon ordre et vous pouvez obtenir des résultats différents de ce que vous attendiez . Afin d'assurer le bon ordre , utilisez la fonction " chmod " pour attribuer les autorisations de répertoire vers le nouveau répertoire après l'avoir créée avec la fonction " mkdir "
Par exemple : .
< ? phpif ( mkdir ( $ newdir , 0755 , true) ) chmod ( newdir $ , 0755 ) ; ? > Photos