Что-то более универсальное, так как это появляется в 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); }