Position actuelle: Accueil> Derniers articles> Comment vérifier les modifications de l'autorisation des fichiers dans PHP en combinant la fonction UMask et la fonction STAT? Guide de fonctionnement pratique

Comment vérifier les modifications de l'autorisation des fichiers dans PHP en combinant la fonction UMask et la fonction STAT? Guide de fonctionnement pratique

gitbox 2025-07-09

1. Introduction à umask () Fonction

La fonction umask () est utilisée pour définir ou obtenir le masque de création de mode de fichier du processus actuel (umask). Le masque de mode de fichier détermine les autorisations par défaut pour les fichiers nouvellement créés. En définissant le masque approprié, les programmes PHP peuvent s'assurer que leurs autorisations sont automatiquement limitées lors de la création d'un nouveau fichier.

Utilisation de umask ()

 <span><span><span class="hljs-comment">// Obtenez le masque de création de fichiers du processus actuel</span></span><span>
</span><span><span class="hljs-variable">$current_umask</span></span><span> = </span><span><span class="hljs-title function_ invoke__">umask</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ActuelumaskLa valeur est: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$current_umask</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-comment">// En créer un nouveauumask</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>);  </span><span><span class="hljs-comment">// La valeur du masque est0022,Indique que les autorisations du nouveau fichier sont755</span></span><span>
</span></span>

Dans l'exemple ci-dessus, nous obtenons d'abord la valeur UMask actuelle et définissons une nouvelle valeur de masque à l'aide de la fonction umask () . La signification de 0022 est: le fichier nouvellement créé sera automatiquement défini sur 755 autorisations (c'est-à-dire que l'utilisateur a lu et écrit des autorisations d'exécution, tandis que d'autres utilisateurs n'ont lu que des autorisations).


2. Introduction à la fonction stat ()

La fonction stat () est utilisée pour obtenir les informations d'état du fichier spécifié, y compris la taille du fichier, le dernier temps de modification et les autorisations de fichier. Il renvoie un tableau avec des détails, où le champ Mode représente le mode d'autorisation du fichier.

Utilisation de base de STAT ()

 <span><span><span class="hljs-variable">$file_stat</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stat</span></span><span>(</span><span><span class="hljs-string">'example.txt'</span></span><span>);

</span><span><span class="hljs-comment">// Afficher le mode d&#39;autorisation du fichier</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Le mode d&#39;autorisation du fichier est: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_stat</span></span><span>[</span><span><span class="hljs-string">'mode'</span></span><span>]) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span></span>

Le mode renvoyé par stat () est une valeur entière et doit être analysé avec un masque un peu. Grâce aux opérations de bit, nous pouvons obtenir des informations d'autorisation détaillées du fichier.


3. Combiner umask () et stat () pour vérifier les modifications de l'autorisation des fichiers

Afin de mieux gérer les autorisations de fichiers, nous pouvons utiliser umask () et stat () en combinaison pour suivre les modifications des autorisations de fichiers. Par exemple, supposons que nous ayons un fichier qui souhaite vérifier les autorisations réelles du fichier après sa création et assurez-vous qu'elle est comme prévu.

Étapes pratiques:

  1. Configurez le UMask approprié pour vous assurer que les autorisations du nouveau fichier répondent à nos exigences.

  2. Utilisez la fonction stat () pour obtenir des autorisations dans le fichier.

  3. Comparez la valeur d'autorisation renvoyée par STAT () avec la valeur attendue pour déterminer si les autorisations de fichier ont changé.

Exemple de code:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>

</span><span><span class="hljs-comment">// Définir le masque d&#39;autorisation du fichier</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>);

</span><span><span class="hljs-comment">// Créer un nouveau fichier</span></span><span>
</span><span><span class="hljs-variable">$file</span></span><span> = </span><span><span class="hljs-string">'example.txt'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-string">"This is a test file."</span></span><span>);

</span><span><span class="hljs-comment">// Obtenir l&#39;état du fichier</span></span><span>
</span><span><span class="hljs-variable">$file_stat</span></span><span> = </span><span><span class="hljs-title function_ invoke__">stat</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>);

</span><span><span class="hljs-comment">// Obtenez le mode d&#39;autorisation du fichier</span></span><span>
</span><span><span class="hljs-variable">$file_permissions</span></span><span> = </span><span><span class="hljs-variable">$file_stat</span></span><span>[</span><span><span class="hljs-string">'mode'</span></span><span>] &amp; </span><span><span class="hljs-number">0777</span></span><span>;  </span><span><span class="hljs-comment">// Bitwise et opération,Obtenez la valeur d&#39;autorisation du fichier</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Les autorisations réelles du fichier sont: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_permissions</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;

</span><span><span class="hljs-comment">// Déterminez si les autorisations de fichiers répondent aux attentes</span></span><span>
</span><span><span class="hljs-variable">$expected_permissions</span></span><span> = </span><span><span class="hljs-number">0755</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$file_permissions</span></span><span> === </span><span><span class="hljs-variable">$expected_permissions</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Les autorisations de fichiers sont conformes aux attentes!\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Les autorisations de fichiers ne répondent pas aux attentes,L&#39;autorisation réelle est: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">decoct</span></span><span>(</span><span><span class="hljs-variable">$file_permissions</span></span><span>) . </span><span><span class="hljs-string">"\n"</span></span><span>;
}

</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Analyse de code:

  • Tout d'abord, nous définissons le masque d'autorisation de fichier via UMask (0022) pour nous assurer que l'autorisation du nouveau fichier est 0755 .

  • Utilisez la fonction file_put_contents () pour créer un nouveau fichier example.txt .

  • Ensuite, nous obtenons les informations d'état du fichier via la fonction stat () , en particulier le mode d'autorisation du fichier ( mode ).

  • Enfin, la partie d'autorisation du fichier est extraite par le fonctionnement de bitwise ( & 0777 ) et comparée à l'autorisation attendue ( 0755 ).

Résultat de sortie:

 <span><span><span class="hljs-section">Les autorisations réelles du fichier sont: 755</span></span><span>
Les autorisations de fichiers sont conformes aux attentes!
</span></span>

De cette façon, nous pouvons vérifier efficacement si les autorisations de fichiers sont définies en fonction de nos exigences, garantissant ainsi la sécurité des opérations de fichiers.