使用RecursiveIteratorIterator递归chmod文件

时间:2013-07-10 19:16:38

标签: php recursion iterator filesystems chmod

我正在尝试使用RecursiveDirectoryIteratorRecursiveIteratorIterator php类来构建一个递归设置给定路径的文件或/和目录权限的函数。但事情似乎不起作用,所以我很乐意接受你的帮助。谢谢!

function rSetPerms($path ,$filemode = '0644', $foldermode = '0705')
{ 

    if(!is_dir($path) and !file_exists($path)) return false;

        $paths = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST);

        foreach ($paths as $item) {
            if ($item->isDir()) 
            {
                if (!@ chmod($item->__toString(), octdec($foldermode))) return false;
            } 
            else 
            {
                if (!@ chmod($item->__toString(), octdec($filemode))) return false;
            }
    }
    return true;
} 

1 个答案:

答案 0 :(得分:0)

你应该记住,你的php脚本需要以root身份执行才能chmod文件。

您也可以使用sudo chmod -R以递归方式将chmod应用于目录及其子目录中的文件。