web-dev-qa-db-fra.com

PHP: ouvrir pour créer des dossiers

J'ai besoin de savoir s'il existe un moyen de créer un nouveau dossier si le chemin n'existe pas. Quand j'essaye de fopen () un chemin, il dit NO such File or Directory exists J'ai essayé d'ouvrir le fichier en utilisant "w" et "w +" mais je n'ai pas pu créer de nouveau dossier. Y a-t-il un moyen d'y parvenir sans utiliser mkdir (). Parce que j'ai besoin d'extraire les noms de répertoires seuls du chemin vers mkdir () à chaque fois. Toute aide est appréciée. Merci...

32
Vivek

fopen ne peut pas créer de répertoires.

Vous devrez utiliser quelque chose comme:

$filename = '/path/to/some/file.txt';
$dirname = dirname($filename);
if (!is_dir($dirname))
{
    mkdir($dirname, 0755, true);
}
78
qbert220

fopen ne crée ni n'ouvre de dossiers, seulement des fichiers. Vous devriez vérifier avec is_dir d'abord s'il existe, sinon créez-le. mkdir a une option de création récursive.

if (!is_dir($myDir)) {
    mkdir($myDir, 0777, true); // true for recursive create
}

Si vous cherchez un moyen d'ouvrir un répertoire et de lire son contenu, vous devriez regarder SPL DirectoryIterator

8
ChrisR

vous ne pouvez pas utiliser fopen pour créer des dossiers.
Pour créer un dossier, vous devez utiliser mkdir

pour les opérations que vous devez répéter à chaque fois, il existe une fonction de langage appelée "fonctions définies par l'utilisateur". Caractéristique la moins connue de PHP, comme on peut le dire à en juger par les réponses stackoverflow.

3
Your Common Sense