etwas ein bisschen mehr universal, da dies kommt auf google. Während die Details genauer sind, ist der Titel dieser Frage universeller.
/**
* 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;
}
Dies wird einen Weg nehmen, möglicherweise mit einer langen Kette von uncreated Verzeichnissen und halten ein Verzeichnis gehen, bis es zu einem bestehenden Verzeichnis erhält. Dann wird versucht, das nächste Verzeichnis in diesem Verzeichnis zu erstellen und fortzufahren, bis alle Verzeichnisse erstellt sind. Wenn es erfolgreich ist, gibt es true zurück.
Könnte verbessert werden, indem eine Stopp-Ebene, so dass es nur fehlschlägt, wenn es über Benutzerordner oder etwas geht und durch die Einbeziehung von Berechtigungen.
Sie verpassten die 'rekursive' Flag - siehe Satish Antwort. –
is_dir() ist etwas schneller, als file_exists() –
@YuryPliashkou Ja, vielleicht, aber es funktioniert nicht, wenn es bereits eine * Datei * mit diesem Namen gibt. – Gumbo