ti-enxame.com

mkdir () diz que não existe esse diretório e falha?

Provavelmente, estou fazendo algo muito errado, mas quando tento criar um diretório (usando uma variável de uma inserção apenas executada como o último nome da pasta), recebo o erro:

Aviso: mkdir () [function.mkdir]: Esse arquivo ou diretório não existe em/home/blah/blah

com o código:

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

é claro que o diretório não existe .. Estou tentando fazê-lo agora? confuso!

34
rpsep2

Você tem um erro na sua string:

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

deveria estar:

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

Isso acontece porque você não possui o caminho images/listing-images/rent Existente no seu sistema de arquivos.

Se você deseja criar o caminho inteiro - basta passar o terceiro argumento como true:

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

Também há uma chance de você estar em um diretório errado no momento. Se for esse o caso - você precisa alterar o diretório atual com chdir() ou especificar o caminho completo.

92
zerkms

Supondo que você esteja usando PHP> 5.0.0, tente mkdir("path", 0777, true); _ para ativar a criação de diretórios recursivamente (veja aqui: http://php.net/manual /en/function.mkdir.php ).

13
adamdunson
  • recursivo Permite a criação de diretórios aninhados especificados no nome do caminho.
  • mas não funcionou para mim !! por isso aqui é o que eu vim com !!
  • e funciona muito perfeito !!

$ upPath = "../uploads/RS/2014/BOI/002"; // caminho completo
$ tags = explode ('/', $ upPath); // explode o caminho completo
$ 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

Provavelmente o verdadeiro erro foi que ele esqueceu um ápice extra.

Este:

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

Dentro:

/'.$insertID."

Versão correta:

/".$insertID

Versão correta estendida:

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

no meu caso, $ insertED foi gerado a partir de alguns dados como string concatenando

$insertID=$year.$otherId;

Simplesmente reescrevi código como este e o erro desapareceu:

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