2015-04-29 65 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); 
} 

我已經這樣做了..它是爲你工作嗎?

相關問題