2012-06-11 18 views
1

我將重命名功能設置爲dirs的crud系統的一部分,並且正確設置重命名上傳目錄的子目錄的過程以及重命名過程正在工作意味着dirs正在相應地重命名,但我從 opendir獲得錯誤代碼。顯然路徑沒有找到,因爲它們是重命名的路徑。不知道如何解決這個問題,這是百萬美元的問題?opendir試圖找到現在不存在的路徑,因爲它們已被重命名

控制器:

private function _edify_dirs_recursive($targets, $new_dirs) 
{ 
    $targets = rtrim(preg_replace(array("/\\\\/", "/\/{2,}/"), "/", $targets), "/"); 
    $new_dirs = rtrim(preg_replace(array("/\\\\/", "/\/{2,}/"), "/", $new_dirs), "/"); 
    $explode_targets = explode(',',$targets); 
    $explode_new_dirs = explode(',',$new_dirs); 

    foreach($explode_targets as $target_keys): 
     $dirs_obsolete = "./uploads/$target_keys"; 
     foreach($explode_new_dirs as $new_dirs_keys): 
      $dirs_new = "./uploads/$new_dirs_keys"; 
      $chid_generator = @rename($dirs_obsolete,$dirs_new); 
      if($dhandle = @opendir("./uploads/$target_keys")) 
      { 
       while(FALSE !== ($entry = @readdir($dhandle))) 
       { 
        { true; } 
       } 
       //closedir must be within if logic 
       @closedir($dhandle); 
      } 
     endforeach; 
    endforeach; 
} 
+1

我不遵循你的'opendir'循環的邏輯;你不斷用'$ chnm_generator'替代'readdir'迭代器,這是'rename()'調用的布爾結果,但實際上根本不會使用'$ entry'。這個不成立。 – lanzz

+0

如果它不使用$ chid_generator,每個$ dir是如何被相應地重命名的? – eNigma

+0

我刪除了標量變量,只留下了$ chid_generator,因此{$ chid_generator}並且它仍然可以工作,儘管爲了少代碼我會省去$ entry。但是,如果你有什麼是這樣的話爲什麼它工作,或者它是一個黑客?例如,在你的rmdir任何$ dirs的窗口中,你必須在rmdir之前關閉它,這是沒有意義的,但是會使權限被拒絕的錯誤無效,否則你將重複獲取。讓我知道你的想法和你的建議。現在我剛剛得到了{$ chid_generator;}但是,我想讓openddir和readdir錯誤停止。 – eNigma

回答

1

既然你剛剛更名爲./uploads/$target_keys./uploads/$new_dirs_keys,你不應該試圖opendir("./uploads/$target_keys"),但opendir("./uploads/$new_dirs_keys")

+0

嗯讓我試試 – eNigma

+0

是的,最後的工作! – eNigma

+0

那工作的LANZZ!它工作,它的工作:) – eNigma

相關問題