2012-04-11 5 views
-2

フルフォルダを削除するために使用しようとしている次の機能がありますが、アイデアや推奨事項は削除されていません。PHPフルフォルダを削除する

public function submit() 
{ 
     $location = $_SERVER['DOCUMENT_ROOT'].'/_assets/quote/uploads/'; 

     $folderName = $this->quote->getCompanyDetails()->companyName; 

     $data['companyContact'] = $this->quote->getCompanyDetails()->companyContact; 

     $this->load->view('submit',$data); 

     $this->quote->removeQuote(); 

     if(is_dir($location.$folderName) === TRUE) 
     { 
      $files = array_diff(scandir($location.$folderName), array('.','..')); 

      foreach($files as $file) 
      { 
       Delete(realpath($location.$folderName).'/'. $file); 
      } 
      return rmdir($location.$folderName); 
     } 
     else if(is_file($location.$folderName) === TRUE) 
     { 
      return unlink($location.$folderName); 
     } 
     return FALSE; 
} 

更新:あなたは1回の呼び出しで完全なフォルダを削除することはできません

public function submit() 
{ 
     $location = $_SERVER['DOCUMENT_ROOT'].'/_assets/quote/uploads/'; 

     $folderName = $this->quote->getCompanyDetails()->companyName; 

     $data['companyContact'] = $this->quote->getCompanyDetails()->companyContact; 

     $this->load->view('submit',$data); 

     //$this->quote->removeQuote(); 

     $this->removeFolder(); 
} 

private function removeFolder(){ 
     $location = $_SERVER['DOCUMENT_ROOT'].'/_assets/quote/uploads/'; 

     $folderName = $this->quote->getCompanyDetails()->companyName; 

     foreach(glob($location.$folderName.'/*') as $file) 
     { 
      if(is_dir($location.$folderName)) 
      { 
       rmdir($location.$folderName); 
      }else{ 
       unlink($location.$folderName); 
      } 
      rmdir($location.$folderName); 
     } 
} 
+1

オペレーティングシステムでファイルを削除する権限がありますか? – AMayer

+0

初めて「削除」を呼び出し、2回目のリンクを解除します。両方の時間をリンク解除してはいけませんか? – kingcoyote

+0

@AMayerはい私do –

答えて

1

。再帰的に行う必要があります。

function rrmdir($dir) { 
    foreach(glob($dir . '/*') as $file) { 
     if(is_dir($file)) 
      rrmdir($file); 
     else 
      unlink($file); 
    } 
    rmdir($dir); 
} 
+0

私はそれがそのように動作します私の質問を更新しました? –

+0

彼は1回の呼び出しですべてのフォルダをすべて削除しようとしていません。再帰のビットは悪いことではありませんが、彼は深さ-1のスキャンを行い、そこから削除していました。 いいえ、空のフォルダでrmdirを呼び出そうとしているため、更新されたバージョンは機能しません。 – kingcoyote

+0

@kingcoyoteあなたはどんな光を提供することができますか? –