Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

recursiveChmod de Jeppe Toustrup

Trouvé le 16-1-2011 en http://snipplr.com/view.php?codeview&id=5350. Je n’ai pu m’empêcher de faire des changements cosmétiques dans les accolades ou dans certains commentaires ; j’ai donc pu introduire aussi des erreurs.

<?php
/**
Chmods files and folders with different permissions.

This is an all-PHP alternative to using: \n
exec("find ".$path." -type f -exec chmod 644 {} \;"); \n
exec("find ".$path." -type d -exec chmod 755 {} \;");

@author Jeppe Toustrup (tenzer at tenzer dot dk)
@param $path An either relative or absolute path to a file or directory
which should be processed.
@param $filePerm The permissions any found files should get.
@param $dirPerm The permissions any found folder should get.
@return Returns TRUE if the path if found and FALSE if not.
@warning The permission levels has to be entered in octal format, which
normally means adding a zero ("0") in front of the permission level. \n
More info at: http://php.net/chmod.
*/

function recursiveChmod($path, $filePerm=0644, $dirPerm=0755)
{
  // Check if the path exists
  if(!file_exists($path))
  {
    return(FALSE);
  }
  // See whether this is a file
  if(is_file($path))
  {
    // Chmod the file with our given filepermissions
    chmod($path, $filePerm);
  } // If this is a directory...
  elseif(is_dir($path))
  {
    // Then get an array of the contents
    $foldersAndFiles = scandir($path);
    // Remove "." and ".." from the list
    $entries = array_slice($foldersAndFiles, 2);
    // Parse every result…
    foreach($entries as $entry)
    {
      // And call this function again recursively, with the same permissions
      recursiveChmod($path."/".$entry, $filePerm, $dirPerm);
    }
  // When we are done with the contents of the directory, we chmod the directory itself
  chmod($path, $dirPerm);
  }
  // Everything seemed to work out well, return TRUE
  return(TRUE);
}
?>
								
Dominique Meeùs . Date: 2011… 2016