Maison  >  Article  >  développement back-end  >  Explication détaillée de la fonction d'autorisation de fichier de PHP chmod

Explication détaillée de la fonction d'autorisation de fichier de PHP chmod

*文
*文original
2018-01-05 18:02:525895parcourir

La fonction chmod() change le mode du fichier. chmod — Change le mode fichier. Renvoie TRUE en cas de succès, FALSE sinon.

Syntaxe
chmod(file,mode) Paramètre Description
file Obligatoire. Spécifie les documents à vérifier. Le mode
est facultatif. Spécifiez de nouvelles autorisations.
Le paramètre mode est composé de 4 chiffres :
Le premier chiffre est toujours 0
Le deuxième chiffre précise les autorisations du propriétaire
Le deuxième chiffre précise les autorisations du groupe d'utilisateurs auquel appartient le propriétaire
Le quatrième chiffre spécifie les autorisations pour tout le monde
Valeurs possibles (pour définir plusieurs autorisations, totalisez les nombres ci-dessous) :
1 - Autorisations d'exécution
2 - Autorisations d'écriture
4 - Lecture autorisations
Voyons un exemple simple

<?php 
chmod("/somedir/somefile", 755); // 十进制数,可能不对 
chmod("/somedir/somefile", "u+rwx,go+rx"); // 字符串,不对 
chmod("/somedir/somefile", 0755); // 八进制数,正确的 mode 值 
?>

Mode fichier récursif amélioré @ infosoft...., c'est un petit raccourci qui devrait gérer tous les fichiers du type de système de fichiers Linux. Cela peut modifier par lots les autorisations des fichiers ou des répertoires

<?php 
function chmodr($path, $filemode) { 
if (!is_dir($path)) 
return chmod($path, $filemode); 
$dh = opendir($path); 
while (($file = readdir($dh)) !== false) { 
if($file != &#39;.&#39; && $file != &#39;..&#39;) { 
$fullpath = $path.&#39;/&#39;.$file; 
if(is_link($fullpath)) 
return FALSE; 
elseif(!is_dir($fullpath) && !chmod($fullpath, $filemode)) 
return FALSE; 
elseif(!chmodr($fullpath, $filemode)) 
return FALSE; 
} 
} 
closedir($dh); 
if(chmod($path, $filemode)) 
return TRUE; 
else 
return FALSE; 
} 
?>

Si vous avez trop de répertoires, vous pouvez utiliser ce code

<?php 
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname), RecursiveIteratorIterator::SELF_FIRST); 
foreach($iterator as $item) { 
chmod($item, $filemode); 
} 
?>

pour modifier les autorisations du répertoire
Haha, nous ne le faisons pas. Il parle simplement de la syntaxe simple de chmod, et donne également des instructions compliquées sur des exemples d'utilisation de chmod

bool chmod ( string $filename, int $mode)
Essayez de changer de mode du fichier spécifié par nom de fichier au mode donné Déterminé.
Notez que mode ne sera pas automatiquement traité comme une valeur octale et qu'il ne peut pas s'agir d'une chaîne (telle que "g+w"). Pour garantir un fonctionnement correct, vous devez ajouter 0 devant le mode :
Le paramètre mode contient trois nombres octaux qui spécifient le propriétaire, le groupe du propriétaire et les restrictions d'accès de chacun dans l'ordre. Chaque partie peut être calculée en ajoutant les autorisations requises. Le chiffre 1 rend le fichier exécutable, le chiffre 2 rend le fichier accessible en écriture et le chiffre 4 rend le fichier lisible. Ajoutez ces numéros pour spécifier les autorisations requises. Pour plus d'informations sur les autorisations de fichiers sur les systèmes UNIX, lisez les manuels "man 1 chmod" et "man 2 chmod".

<?php 
// Read and write for owner, nothing for everybody else 
chmod("/somedir/somefile", 0600); 
// Read and write for owner, read for everybody else 
chmod("/somedir/somefile", 0644); 
// Everything for owner, read and execute for others 
chmod("/somedir/somefile", 0755); 
// Everything for owner, read and execute for owner&#39;s group 
chmod("/somedir/somefile", 0750); 
?>

Renvoie VRAI en cas de succès et FAUX en cas d'échec.
Remarque : L'utilisateur actuel fait référence à l'utilisateur qui exécute PHP. Ce n'est probablement pas la même chose qu'un utilisateur Shell ou FTP habituel. Sur la plupart des systèmes, le mode d'un fichier ne peut être modifié que par l'utilisateur propriétaire du fichier.
Remarque : Cette fonction ne peut pas être utilisée sur des fichiers distants. Les fichiers en cours de vérification doivent être accessibles via le système de fichiers du serveur.
Remarque : lorsque le mode sans échec est activé, PHP vérifiera si le fichier sur lequel l'opération est effectuée a le même UID (propriétaire) que le script en cours d'exécution. Il est à noter que les SUID, SGID et sticky bits ne peuvent pas être modifiés.

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!

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