Algo un poco más universal ya que esto sale en Google. Si bien los detalles son más específicos, el título de esta pregunta es más universal.
/**
* 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;
}
Esto tomará un camino, posiblemente con una larga cadena de directorios no creados, y seguir subiendo un directorio hasta que llega a un directorio existente. Luego intentará crear el siguiente directorio en ese directorio, y continuará hasta que haya creado todos los directorios. Devuelve verdadero si tiene éxito.
Se podría mejorar proporcionando un nivel de detención por lo que simplemente falla si va más allá de la carpeta de usuario o algo así y al incluir permisos.
se ha perdido la bandera 'recursiva' - véase la respuesta de Satish. –
is_dir() es un poco más rápido que file_exists() –
@YuryPliashkou Sí, tal vez, pero no funciona si ya hay un * archivo * con ese nombre. – Gumbo