Something phổ quát hơn một chút vì đây đi lên trên google. Mặc dù chi tiết cụ thể hơn, nhưng tiêu đề của câu hỏi này phổ biến hơn.
/**
* recursively create a long directory path
*/
function createPath($path) {
if (is_dir($path)) return true;
$prev_path = substr($path, 0, strrpos($path, '/', -2) + 1);
$return = createPath($prev_path);
return ($return && is_writable($prev_path)) ? mkdir($path) : false;
}
Điều này sẽ có đường dẫn, có thể với một chuỗi dài các thư mục chưa được xử lý và tiếp tục mở một thư mục cho đến khi thư mục hiện có. Sau đó, nó sẽ cố gắng để tạo ra các thư mục tiếp theo trong thư mục đó, và tiếp tục cho đến khi nó được tạo ra tất cả các thư mục. Nó trả về true nếu thành công.
Có thể được cải thiện bằng cách cung cấp một mức dừng để nó chỉ thất bại nếu nó vượt ra ngoài thư mục người dùng hoặc một cái gì đó và bằng cách bao gồm quyền.
Bạn bỏ lỡ cờ 'đệ quy' - xem câu trả lời Satish của. –
is_dir() nhanh hơn một chút so với tệp_exists() –
@YuryPliashkou Có thể, nhưng nó không hoạt động nếu đã có * tệp * với tên đó. – Gumbo