2013-02-21 17 views
26

Im etwas zu tun, wahrscheinlich sehr einfach falsch, aber wenn ich versuche, ein Verzeichnis (mit einer Variablen eines Einsatz nur als letzten Ordnernamen ausgeführt) zu machen, erhalte ich die Fehlermeldung:mkdir() sagt Theres kein solches Verzeichnis und schlägt fehl?

Warning: mkdir() [function.mkdir]: No such file or directory 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 ist das Verzeichnis nicht vorhanden .. Ich versuche es jetzt zu machen? verwirrt!

+0

Bitte erklären, was ' "images/listing-images/Miete /'.$ insertID."' String bedeutet – zerkms

+2

Ist das übergeordnete Verzeichnis des jetzt-zu-sein-created-Verzeichnis dort? – complex857

+3

Nicht verwirrt sein. Ich denke, dass Verzeichnis, in dem Sie ein Verzeichnis erstellen möchten, nicht existiert. – Zaffy

Antwort

6

Sie haben einen Fehler in der Zeichenfolge:

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

sein sollte:

mkdir("images/listing-images/rent/$insertID"); 
+1

Ich bin sicher, dass sein Fehler nicht dadurch verursacht wurde, aber durch das Fehlen der 'images/listing-images/rent' – zerkms

+0

Ich denke, wir werden herausfinden –

+2

Also, was ist Ihre endgültige Antwort? Es gibt keinen ** Syntaxfehler ** im Code. Die Zeichenfolge ist syntaktisch korrekt (obwohl sinnlos).Wie Sie gesagt haben - das sollte ein Kommentar sein :-) – zerkms

80

Es geschieht, weil Sie nicht images/listing-images/rent Pfad im Dateisystem vorhandene haben.

Wenn Sie den ganzen Weg schaffen wollen - pass nur das dritte Argument als true:

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

Es gibt auch eine Chance, dass Sie zur Zeit in einem falschen Verzeichnis sind. Wenn dies der Fall ist, müssen Sie das aktuelle Verzeichnis mit chdir() ändern oder den vollständigen Pfad angeben.

+0

gleich für die oben genannten .. nur 1 Sekunde schneller –

12

Angenommen, Sie verwenden PHP> 5.0.0, versuchen Sie mkdir("path", 0777, true); zu aktivieren, Verzeichnisse rekursiv zu erstellen (siehe hier:).

+0

Die einzige, die in Bezug auf die Regeln von PHP 5.0 –

-2

Sie sollten nicht is_dir() verwenden, um zu prüfen, ob etwas existiert, Sie wollen auch file_exists(). Versuchen Sie:

if (file_exists("images/listing-images/rent/$insertID") { 
    mkdir("images/listing-images/rent/$insertID."); 
} 

Haben die 'genommen. aus, da es wie ein Syntaxfehler aussieht, aber Sie haben möglicherweise einen legitimen Grund, es zu behalten.

Wenn das mkdir immer noch fehlschlägt, könnte es sein, dass images/listing-images/rent nicht existieren, Sie werden muss das separat erstellen, wenn es so ist.

+0

erklärt "Sie sollten nicht is_dir()" --- keine Klarstellung dafür verwenden? – zerkms

+0

Tatsächlich ignorieren Sie den ersten Teil, nur überprüft die is_dir Dokumente und es prüft auch auf Existenz, so ist es nur, dass das Elternverzeichnis nicht existiert. – CaffeinatedDave

+0

Sollte sich jedoch bewusst sein, dass [is_dir] (http://php.net/manual/en/function.is-dir.php) Ergebnisse speichert. Siehe Hinweis auf Seite auf php.net. – ficuscr

0
  • rekursiv Ermöglicht die Erstellung verschachtelter Verzeichnisse, die im Pfadnamen angegeben sind.
  • aber hat nicht für mich gearbeitet !! Dafür habe ich mich entschieden !!
  • und es funktioniert sehr perfekt!

$upPath = "../uploads/RS/2014/BOI/002"; // full path
$tags = explode('/' ,$upPath); // explode the full path
$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 
    } 
} 
Verwandte Themen