Esempio n. 1
0
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;
}