function ChmodRecursive($path, $filemode = NULL, $dirmode = NULL) { $ret = TRUE; if (is_dir($path)) { $dh = opendir($path); while ($file = readdir($dh)) { if ($file != '.' && $file != '..') { $fullpath = $path . '/' . $file; if (is_dir($fullpath)) { if (!ChmodRecursive($fullpath, $filemode, $dirmode)) { $ret = FALSE; } } else { if (isset($filemode) && !@chmod($fullpath, $filemode)) { $ret = FALSE; } } } } closedir($dh); if (isset($dirmode) && !@chmod($path, $dirmode)) { $ret = FALSE; } } else { if (isset($filemode)) { $ret = @chmod($path, $filemode); } } return $ret; }
/** * Рекурсивно обходит все файлы и папки и изменяет права доступа к ним. * @param $Path * @param int $FilesMode * @param int $DirsMode * @return bool */ function ChmodRecursive($Path, $FilesMode = 0666, $DirsMode = 0777) { if (is_file($Path)) { chmod($Path, $FilesMode); return true; } AddLastSlash($Path); $files = scandir($Path); foreach ($files as $file) { if (is_dir($Path . $file) && $file != '.' && $file != '..') { chmod($Path . $file, $DirsMode); ChmodRecursive($Path . $file, $FilesMode, $DirsMode); } elseif (is_file($Path . $file)) { chmod($Path . $file, $FilesMode); } } return true; }