2013-02-21 26 views
26

Im có khả năng làm điều gì đó rất đơn giản là sai, nhưng khi tôi cố gắng để tạo ra một thư mục (sử dụng một biến của một chèn chỉ thực hiện như tên thư mục cuối cùng), tôi nhận được lỗi:mkdir() nói rằng không có thư mục như vậy và không thành công?

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

với mã:

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

tất nhiên thư mục không tồn tại .. Tôi đang cố gắng tạo danh sách bây giờ? bối rối!

+0

Xin giải thích những gì ' "images/niêm yết images/thuê /'.$ insertID."' Chuỗi nghĩa – zerkms

+2

là thư mục cha của bây giờ-to-be-tạo-thư mục đó? – complex857

+3

Đừng nhầm lẫn. Tôi nghĩ rằng thư mục mà bạn muốn tạo một thư mục không tồn tại. – Zaffy

Trả lời

6

Bạn có một lỗi trong chuỗi của bạn:

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

nên là:

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

Tôi chắc rằng lỗi của anh ấy không gây ra bởi điều đó, nhưng do thiếu 'images/listing-images/rent' – zerkms

+0

Tôi đoán chúng ta sẽ tìm ra –

+2

Vậy câu trả lời cuối cùng của bạn là gì? Không có lỗi ** cú pháp ** trong mã. Chuỗi là cú pháp chính xác (mặc dù vô nghĩa).Như bạn đã nói - đây phải là nhận xét :-) – zerkms

80

Nó xảy ra bởi vì bạn không có images/listing-images/rent con đường hiện có trong hệ thống tập tin của bạn.

Nếu bạn muốn tạo toàn bộ đường dẫn - chỉ cần vượt qua đối số thứ 3 như một true:

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

Ngoài ra còn có một cơ hội bạn đang ở trong một thư mục sai hiện. Nếu trường hợp này xảy ra - bạn cần thay đổi thư mục hiện tại bằng chdir() hoặc chỉ định đường dẫn đầy đủ.

+0

tương tự như trên .. chỉ 1 giây nhanh hơn –

12

Giả sử bạn đang sử dụng PHP> 5.0.0, hãy thử mkdir("path", 0777, true); để bật tạo thư mục theo cách đệ quy (xem tại đây: http://php.net/manual/en/function.mkdir.php).

+0

Người duy nhất được giải thích liên quan đến các quy tắc của PHP 5.0 –

-2

Bạn không nên sử dụng is_dir() để kiểm tra xem có gì đó tồn tại hay không, bạn cũng muốn tệp file_exists(). Thử:

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

Đã lấy '. vì nó trông giống như lỗi cú pháp, nhưng bạn có thể có lý do chính đáng để giữ nó.

Nếu mkdir vẫn không thành công, có thể hình ảnh/danh sách-hình ảnh/thuê không tồn tại, bạn sẽ phải tạo ra một cách riêng biệt nếu có.

+0

"Bạn không nên sử dụng is_dir()" --- bất kỳ làm rõ cho điều đó? – zerkms

+0

Thực sự bỏ qua phần đầu tiên, chỉ cần kiểm tra các tài liệu is_dir và nó kiểm tra sự tồn tại là tốt, do đó, nó sẽ chỉ được rằng thư mục phụ huynh không tồn tại. – CaffeinatedDave

+0

Nên biết rằng [is_dir] (http://php.net/manual/en/function.is-dir.php) lưu trữ kết quả. Xem ghi chú trong trang tại php.net. – ficuscr

0
  • đệ quy Cho phép tạo thư mục lồng nhau được chỉ định trong tên đường dẫn .
  • nhưng không hoạt động đối với tôi !! cho rằng đây là những gì tôi đã đưa ra với !!
  • và nó hoạt động rất hoàn hảo !!

$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 
    } 
} 
Các vấn đề liên quan