2013-02-21 11 views
26

Im częściej robi coś bardzo po prostu źle, ale gdy próbuję zrobić katalogu (za pomocą zmiennej wkładki właśnie wykonywane jako ostatnia nazwa folderu), pojawia się błąd:mkdir() mówi, że nie ma takiego katalogu i kończy się niepowodzeniem?

Warning: mkdir() [function.mkdir]: No such file or directory in /home/blah/blah

z kodem:

oczywiście katalog nie istnieje. Próbuję zrobić to teraz? zmieszany!

+0

Proszę wyjaśnić, co ' "images/reklama-Images/wynajem /'.$ insertID."' Ciąg oznacza – zerkms

+2

jest katalog dominującą tam teraz-do-stworzonej-katalogu? – complex857

+3

Nie bądź zdezorientowany. Myślę, że katalog, w którym chcesz utworzyć katalog, nie istnieje. – Zaffy

Odpowiedz

6

masz błąd w ciąg:

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

powinno być:

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

Jestem pewny, że jego błąd nie spowodował tego, ale przez brak 'images/listing-images/rent' – zerkms

+0

Domyślam się, że dowiemy się –

+2

Więc jaka jest twoja ostateczna odpowiedź? W kodzie nie ma ** składni ** błędu. Łańcuch jest poprawny pod względem składniowym (choć bezsensowny).Jak już powiedziałeś - powinien to być komentarz :-) – zerkms

80

Zdarza się, bo nie masz images/listing-images/rent ścieżka istniejący w systemie plików.

Jeśli chcesz stworzyć całą ścieżkę - wystarczy zdać 3rd argumentu jako true:

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

Jest też szansa, że ​​jesteś w złym katalogu komunikatu. W takim przypadku należy zmienić bieżący katalog za pomocą chdir() lub podać pełną ścieżkę.

+0

samo dla powyższego .. tylko 1 sekund szybciej –

-2

Nie powinieneś używać funkcji is_dir() do sprawdzania, czy coś istnieje, chcesz również file_exists(). Wypróbuj:

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

Zrobiłem ". ponieważ wygląda na błąd składniowy, ale możesz mieć uzasadniony powód, aby go zachować.

Jeśli mkdir nadal się nie powiedzie, może to oznaczać, że obrazy/aukcje-obrazy/wynajem nie istnieją, trzeba je utworzyć osobno, jeśli tak.

+0

"Nie powinieneś używać is_dir()" - jakiekolwiek wyjaśnienie tego? – zerkms

+0

Właściwie zignoruj ​​pierwszą część, po prostu sprawdzisz dokument is_dir i sprawdza on również istnienie, więc będzie po prostu, że katalog macierzysty nie istnieje. – CaffeinatedDave

+0

Należy jednak pamiętać, że [is_dir] (http://php.net/manual/en/function.is-dir.php) buforuje wyniki. Zobacz notatkę na stronie php.net. – ficuscr

0
  • rekursywny Umożliwia tworzenie zagnieżdżonych katalogów określonych w nazwie ścieżki .
  • ale nie działa dla mnie !! bo tutaj jest to, co wymyśliłem !!
  • i działa bardzo dobrze !!

$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 
    } 
} 
Powiązane problemy