Щось трохи більш універсальне, оскільки це з'являється в Google. Хоча деталі більш конкретні, назва цього питання є більш універсальною.
/**
* 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;
}
Це піде шляхом, можливо, з довгим ланцюжком нестворених каталогів, і продовжуйте рухатися вгору по одному каталогу, поки він не потрапить у існуючий каталог. Потім він спробує створити наступний каталог у цьому каталозі та продовжить, поки не буде створено всі каталоги. Якщо він успішний, він повертає істину
Можна вдосконалити, забезпечивши рівень зупинки, тому він просто не працює, якщо виходить за межі користувацької папки чи чогось, а також включивши дозволи.
if (!file_exists('path/to/directory')) { mkdir('path/to/directory', 0777, true); }