2015-05-06 15 views
6

Vì vậy, tôi đang cố gắng sử dụng chức năng đổi tên trong php.đổi tên php() Truy cập bị từ chối. (code: 5)

Trong lần thử đầu tiên, nếu thư mục đích trống hoặc không chứa bất kỳ thư mục nào có cùng tên với thư mục nguồn, chức năng đổi tên hoạt động hoàn hảo. Tuy nhiên, nếu có cùng một tên thư mục nó không thành công. Những gì tôi muốn chỉ là ghi đè lên nó và tôi nghĩ đổi tên() là đủ.

Đây là mã của tôi:

/** 
     * Move temp folders to their permanent places 
     * 
     * $module_folder = example (violator, pnp, etc)  
     * $folders = name of folders within module_folder 
     **/ 
     public function move_temp_to_permanent($module_folder, $folders){ 
      $bool = false; 

      $module_folder_path = realpath(APPPATH . '../public/resources/temps/' . $module_folder); 

      $module_folder_destination_path = $_SERVER['DOCUMENT_ROOT'] . '/ssmis/public/resources/photos/' . $module_folder . '/'; 

      foreach($folders as $folder){ 
       $bool = rename($module_folder_path . '/' . $folder, $module_folder_destination_path . $folder); 
      } 

      return $bool; 
     } 

Đoạn mã trên mang lại cho tôi một lỗi nói:

nhắn: đổi tên (C: \ xampp \ htdocs \ ssmis \ \ nguồn lực công cộng \ temps \ vi phạm/SJ-VIOL-2015-0002, C:/xampp/htdocs/ssmis/công khai/tài nguyên/ảnh/vi phạm/SJ-VIOL-2015-0002): Quyền truy cập bị từ chối. (mã: 5)

Tôi đang sử dụng CodeIgniter làm khuôn khổ.

Cảm ơn bạn rất nhiều!

+3

Kiểm tra quyền của tệp. – panther

+0

Tôi đã có thể sử dụng đổi tên() thành công như tôi đã nói ở trên. Nhưng khi tôi cố gắng sử dụng nó để di chuyển một thư mục từ nguồn đến thư mục đích trong đó có cùng tên với tài nguyên thì lỗi xảy ra. Tôi vẫn cần phải kiểm tra quyền truy cập tập tin kể từ khi tôi đã có thể viết trên thư mục? – iamjc015

+0

bạn không thể có thư mục có cùng tên trong thư mục, bạn cần phải kiểm tra cùng tên và 'hợp nhất' nội dung nếu cần. –

Trả lời

9

Nếu đó là trên Windows, điều này có thể đọc trong các đóng góp:

đổi tên() chắc chắn không tuân theo quy ước đổi tên * nix trên WinXP với PHP 5. Nếu $ newname tồn tại, nó sẽ trả về FALSE và $ oldname và $ newname sẽ vẫn ở trạng thái ban đầu của chúng . Bạn có thể làm một cái gì đó giống như thay vì điều này:

function rename_win($oldfile,$newfile) { 
    if (!rename($oldfile,$newfile)) { 
     if (copy ($oldfile,$newfile)) { 
      unlink($oldfile); 
      return TRUE; 
     } 
     return FALSE; 
    } 
    return TRUE; 
} 

Link.

+0

đây là những gì tôi đã làm để giải quyết vấn đề. Tôi xóa tập tin cũ. Cảm ơn. – iamjc015

+0

Tuyệt vời. Chúc mừng mã hóa. – Tpojka

+0

Downvoter, vui lòng giải thích. Cảm ơn. – Tpojka

0

Bạn đang bổ sung thêm/trong con đường làm cho điều này như

/** 
     * Move temp folders to their permanent places 
     * 
     * $module_folder = example (violator, pnp, etc)  
     * $folders = name of folders within module_folder 
     **/ 
     public function move_temp_to_permanent($module_folder, $folders){ 
      $bool = false; 

      $module_folder_path = realpath(APPPATH . '../public/resources/temps/' . $module_folder); 

      $module_folder_destination_path = $_SERVER['DOCUMENT_ROOT'] . '/ssmis/public/resources/photos/' . $module_folder . '/'; 

      foreach($folders as $folder){ 
       $bool = rename($module_folder_path . $folder, $module_folder_destination_path . $folder); 
      } 

      return $bool; 
     } 

bạn cũng có thể vang đường dẫn mà bạn chuẩn bị sẵn sàng để bạn có thể kiểm tra quyền của mình hay không

+0

Tôi sẽ liên hệ lại với bạn nếu công việc này. – iamjc015

+0

Nó không hoạt động. Tôi cần dấu gạch chéo đó để tìm thư mục ... – iamjc015

Các vấn đề liên quan