以递归方式为所有文件和文件夹设置权限

2022-08-30 17:59:10

我想以递归方式设置文件夹和文件权限。文件夹应为 750,文件应为 644。我发现了这一点,并做了一些调整。这个可行吗?

<?php

function chmod_r($Path) {
   $dp = opendir($Path);
   while($File = readdir($dp)) {
      if($File != "." AND $File != "..") {
         if(is_dir($File)){
            chmod($File, 0750);
         }else{
             chmod($Path."/".$File, 0644);
             if(is_dir($Path."/".$File)) {
                chmod_r($Path."/".$File);
             }
         }
      }
   }
   closedir($dp);
}

?> 

答案 1

为什么不使用查找工具?

exec ("find /path/to/folder -type d -exec chmod 0750 {} +");
exec ("find /path/to/folder -type f -exec chmod 0644 {} +");

答案 2

我的解决方案会将所有文件和文件夹递归更改为 0777。我使用DirecotryIterator,它比opendir和while loop更干净。

function chmod_r($path) {
    $dir = new DirectoryIterator($path);
    foreach ($dir as $item) {
        chmod($item->getPathname(), 0777);
        if ($item->isDir() && !$item->isDot()) {
            chmod_r($item->getPathname());
        }
    }
}

推荐