示例#1
0
 /**
  * Chmods files and directories recursivly to given permissions
  *
  * @param	string	$path		Root path to begin changing mode [without trailing slash]
  * @param	string	$filemode	Octal representation of the value to change file mode to [null = no change]
  * @param	string	$foldermode	Octal representation of the value to change folder mode to [null = no change]
  * @return	boolean	True if successful [one fail means the whole operation failed]
  * @since	1.5
  */
 function setPermissions($path, $filemode = '0644', $foldermode = '0755')
 {
     // Initialize return value
     $ret = true;
     if (is_dir($path)) {
         $dh = opendir($path);
         while ($file = readdir($dh)) {
             if ($file != '.' && $file != '..') {
                 $fullpath = $path . '/' . $file;
                 if (is_dir($fullpath)) {
                     if (!FivePath::setPermissions($fullpath, $filemode, $foldermode)) {
                         $ret = false;
                     }
                 } else {
                     if (isset($filemode)) {
                         if (!@chmod($fullpath, octdec($filemode))) {
                             $ret = false;
                         }
                     }
                 }
                 // if
             }
             // if
         }
         // while
         closedir($dh);
         if (isset($foldermode)) {
             if (!@chmod($path, octdec($foldermode))) {
                 $ret = false;
             }
         }
     } else {
         if (isset($filemode)) {
             $ret = @chmod($path, octdec($filemode));
         }
     }
     // if
     return $ret;
 }