it-swarm.com.de

mkdir () sagt, dass es kein solches Verzeichnis gibt und es fehlschlägt?

Ich mache wahrscheinlich etwas sehr einfaches falsch, aber wenn ich versuche, ein Verzeichnis zu erstellen (indem ich eine Variable einer Einfügung verwende, die gerade als letzter Ordnername ausgeführt wird), erhalte ich den Fehler:

Warnung: mkdir () [function.mkdir]: Keine solche Datei oder kein solches Verzeichnis in/home/blah/blah

mit dem Code:

if (!is_dir("images/listing-images/rent/'.$insertID.")) {
        //make new directory with unique id
   mkdir("images/listing-images/rent/'.$insertID."); 
}

natürlich existiert das verzeichnis nicht .. ich versuche es jetzt zu machen? verwirrt!

34
rpsep2

Sie haben einen Fehler in Ihrer Zeichenfolge:

mkdir("images/listing-images/rent/'.$insertID.");

sollte sein:

mkdir("images/listing-images/rent/$insertID");
6
John Conde

Dies liegt daran, dass in Ihrem Dateisystem kein images/listing-images/rent - Pfad vorhanden ist.

Wenn Sie den gesamten Pfad erstellen möchten, übergeben Sie einfach das dritte Argument als true:

mkdir('images/listing-images/rent/'.$insertID, 0777, true);

Es besteht auch die Möglichkeit, dass Sie sich derzeit in einem falschen Verzeichnis befinden. In diesem Fall müssen Sie das aktuelle Verzeichnis mit chdir() ändern oder den vollständigen Pfad angeben.

92
zerkms

Angenommen, Sie verwenden PHP> 5.0.0, versuchen Sie mkdir("path", 0777, true);, um das rekursive Erstellen von Verzeichnissen zu ermöglichen (siehe hier: http://php.net/manual) /en/function.mkdir.php ).

13
adamdunson
  • rekursiv Ermöglicht die Erstellung verschachtelter Verzeichnisse, die im Pfadnamen angegeben sind.
  • aber hat bei mir nicht funktioniert !! Dafür habe ich mir hier was ausgedacht !!
  • und es funktioniert sehr perfekt !!

$ upPath = "../uploads/RS/2014/BOI/002"; // vollständigen Pfad
$ tags = explode ('/', $ upPath); // Explodiere den vollständigen Pfad
$ mkDir = "";

foreach($tags as $folder) {          
    $mkDir = $mkDir . $folder ."/";   // make one directory join one other for the nest directory to make
    echo '"'.$mkDir.'"<br/>';         // this will show the directory created each time
    if(!is_dir($mkDir)) {             // check if directory exist or not
      mkdir($mkDir, 0777);            // if not exist then make the directory
    }
}
0
Ramyz

Wahrscheinlich war der wahre Fehler, dass er einen zusätzlichen Scheitelpunkt vergessen hatte.

Dies:

mkdir("images/listing-images/rent/'.$insertID.");

Innerhalb:

/'.$insertID."

Korrekte Version:

/".$insertID

Erweiterte korrekte Version:

mkdir("images/listing-images/rent/".$insertID);
0
Luca Antonelli

in meinem Fall wurde $ insertED durch Verketten aus einigen Daten als Zeichenfolge generiert

$insertID=$year.$otherId;

Ich habe den Code einfach so umgeschrieben und der Fehler ist verschwunden:

$insertID=(int)($year.$otherId);
0
user3410311