Что-то более универсальное, так как это появляется в 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;
}
Это займет путь, возможно, с длинной цепочкой несозданных каталогов, и будет продолжать идти вверх по одному каталогу, пока не дойдет до существующего каталога. Затем он попытается создать следующий каталог в этом каталоге и продолжит, пока не будут созданы все каталоги. В случае успеха возвращает true.
Может быть улучшено путем предоставления уровня остановки, так что он просто завершится неудачей, если выйдет за пределы пользовательской папки или чего-то еще, и включит разрешения.