Hier ist etwas, das etwas universeller ist, da es bei Google auftaucht. Während die Details eher spezifisch 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 nimmt einen Pfad, möglicherweise mit einer langen Kette von nicht erstellten Verzeichnissen, und geht ein Verzeichnis nach oben, bis es zu einem bestehenden Verzeichnis kommt. Dann versucht es, das nächste Verzeichnis in diesem Verzeichnis zu erstellen und fährt fort, bis es alle Verzeichnisse erstellt hat. Bei Erfolg gibt er true zurück.
Es könnte verbessert werden, indem man eine Stopp-Stufe einführt, so dass es einfach fehlschlägt, wenn es über den Benutzerordner hinausgeht, und indem man Berechtigungen einbezieht.
17 Stimmen
if (!file_exists('path/to/directory')) { mkdir('path/to/directory', 0777, true); }