2015-04-29 68 views
1

我想在ZF2中递归地设置所有文件和文件夹的权限。递归地设置所有文件和文件夹的权限(Zend Framework 2)

我的目录路径是/var/blabla/blabla/blabla/public/files/filename

我要定0777在未经许可的主文件夹。即文件夹名称和文件夹的所有内容。

我使用

public function chmod_r($dir, $dirPermissions, $filePermissions) { 
    $dp = opendir($dir); 
    while($file = readdir($dp)) { 
     if (($file == ".") || ($file == "..")) 
      continue; 

     $fullPath = $dir."/".$file; 

     if(is_dir($fullPath)) { 
      echo('DIR:' . $fullPath . "\n"); 
      chmod($fullPath, $dirPermissions); 
      chmod_r($fullPath, $dirPermissions, $filePermissions); 
     } else { 
      echo('FILE:' . $fullPath . "\n"); 
      chmod($fullPath, $filePermissions); 
     } 

    } 
    closedir($dp); 
} 

的功能,并从我的行动呼唤它:

$this->chmod_r($dirPath, 0777, 0777); 

而$ dirPath包含文件夹的路径。

+0

请记住,您需要对这些文件和目录具有写入权限,否则您无法对其进行修改。如果你用apache用户执行它,那么apache用户需要这个权限 – Sal00m

回答

2

你可以试试这个代码:

$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($pathname), RecursiveIteratorIterator::SELF_FIRST); 

foreach($iterator as $item) { 
    chmod($item, $filemode); 
} 

希望这有助于您解决问题。

+0

但是这不起作用 –

+0

然后使用带有-R参数的SSH命令并且它会执行 –

2
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath), RecursiveIteratorIterator::SELF_FIRST); 

foreach($iterator as $item) { 
    chmod($item, 0777); 
} 

我已经这样做了..它是为你工作吗?

相关问题