2015-05-06 12 views
6

Also versuche ich die Umbenennungsfunktion in PHP zu verwenden.php rename() Zugriff verweigert. (code: 5)

Beim ersten Versuch, wenn der Zielordner ist leer oder enthält keine Verzeichnisse mit dem gleichen Namen wie der Quellordner der Umbenennungsfunktion perfekt funktioniert. Wenn es jedoch denselben Verzeichnisnamen gibt, schlägt es fehl. Was ich will, ist es nur zu überschreiben und ich dachte, rename() würde ausreichen.

Hier ist mein Code:

/** 
     * 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; 
     } 

Der Code gibt mir über eine Fehlermeldung,:

Nachricht: Umbenennungs (C: \ xampp \ htdocs \ SSMIS \ public \ resources \ temps \ violator/SJ-VIOL-2015-0002, C:/xampp/htdocs/ssmis/öffentliche/resources/photos/violator/SJ-VIOL-2015-0002): Zugriff verweigert. (Code: 5)

Ich verwende CodeIgniter als Framework.

Vielen Dank!

+3

Überprüfen Sie die Dateiberechtigungen. – panther

+0

Ich konnte rename() erfolgreich verwenden, wie ich oben gesagt habe. Aber wenn ich versuche, einen Ordner von der Quelle in den Zielordner zu verschieben, in dem sich der Name der Ressource befindet, tritt der Fehler auf. Muss ich noch Dateiberechtigungen überprüfen, da ich in das Verzeichnis schreiben konnte? – iamjc015

+0

Sie können keine Ordner mit demselben Namen in einem Verzeichnis haben, Sie müssen nach dem gleichen Namen suchen und den Inhalt bei Bedarf zusammenführen. –

Antwort

9

Wenn es auf Windows, kann dies sein lesen Beiträge:

rename() folgen definitiv nicht die * nix Umbenennungs Konvention auf WinXP mit PHP 5. Wenn das $ newname vorhanden ist, wird es FALSE zurück und $ oldname und $ newname wird in ihrem ursprünglichen Zustand bleiben . Sie können so etwas wie dies stattdessen tun:

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

Link.

+0

das habe ich getan, um das Problem zu lösen. Ich lösche die alte Datei. Vielen Dank. – iamjc015

+0

Großartig. Glückliche Kodierung. – Tpojka

+0

Downvoter, Erklärung bitte. Vielen Dank. – Tpojka

0

Sie fügen extra/in Weg machen dies wie

/** 
     * 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; 
     } 

Sie auch den Weg, den Sie bereit, Echo, so dass Sie ihr Recht überprüfen kann oder nicht

+0

Ich werde auf Sie zurückkommen, wenn dies funktioniert. – iamjc015

+0

Es hat nicht funktioniert. Ich brauche diesen Schrägstrich, um das Verzeichnis zu finden ... – iamjc015

Verwandte Themen