web-dev-qa-db-fra.com

mkdir () dit qu'il n'y a pas de tel répertoire et échoue?

Je fais probablement quelque chose de très simplement faux, mais lorsque j'essaie de créer un répertoire (en utilisant une variable d'un insert qui vient d'être exécutée comme dernier nom de dossier), j'obtiens l'erreur:

Avertissement: mkdir () [function.mkdir]: Aucun fichier ou répertoire de ce type dans/home/blah/blah

avec le code:

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

bien sûr le répertoire n'existe pas .. J'essaye de le faire maintenant? confus!

34
rpsep2

Vous avez une erreur dans votre chaîne:

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

devrait être:

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

Cela se produit car vous n'avez pas de chemin d'accès images/listing-images/rent Dans votre système de fichiers.

Si vous voulez créer le chemin entier - passez simplement le 3ème argument comme true:

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

Il y a également une chance que vous soyez dans un mauvais répertoire actuellement. Si tel est le cas - vous devez changer le répertoire courant avec chdir() ou spécifier le chemin complet.

92
zerkms

En supposant que vous utilisez PHP> 5.0.0, essayez mkdir("path", 0777, true); pour activer la création récursive de répertoires (voir ici: http://php.net/manual /en/function.mkdir.php ).

13
adamdunson
  • récursif Permet la création de répertoires imbriqués spécifiés dans le nom du chemin.
  • mais n'a pas fonctionné pour moi !! pour ça voici ce que j'ai trouvé !!
  • et ça marche très parfait !!

$ upPath = "../uploads/RS/2014/BOI/002"; // chemin complet
$ tags = explode ('/', $ upPath); // exploser le chemin complet
$ 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

La vraie erreur était probablement qu'il avait oublié un sommet supplémentaire.

Cette:

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

À l'intérieur:

/'.$insertID."

Version correcte:

/".$insertID

Version correcte étendue:

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

dans mon cas, $ insertED a été généré à partir de certaines données sous forme de chaîne en concaténant

$insertID=$year.$otherId;

J'ai simplement réécrit le code comme ceci et l'erreur a disparu:

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