My_mkdir

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 926 fois - Téléchargée 33 fois

Contenu du snippet

Bon. Dans un script de galerie que j'ai fait, j'avais besoin de créer multiples sous dossiers.
Et c'est à ce moment là que j'ai remarqué que la fonction mkdir était incaple de créer le dossier " sousdossier " dans le dossier " machin " ( machin/sousdossier ), si le dossier " machin " en question n'existe pas ...
Il faut donc faire :
mkdir('machin', 0700);
mkdir('machin/sousdossier', 0700);
Ce qui est un peu galère, d'où mon besoin de créer la fonction my_mkdir, qui fera ça automatiquement.

Source / Exemple :


function my_mkdir($dir, $chmod = 0700)
{
        // Si $dir ne contient rien
        if (!empty($dir))
        {
                $array = explode('/', $dir);
                $base_dir = '';
                
                foreach ($array as $key => $value)
                {
                        if ($key)
                                $base_dir .= '/' . $value;
                        else
                                $base_dir .= $value;

                        // Si le dossier à créer existe déjà, on ne fait rien ( ça évite que php retourne une erreur ).
                        // Le !empty($value) est là pour éviter de faire tourner le code, dans cet exemple là :
                        // $dir = 'test/truc/';
                        // on aurait : $array[2] = '';
                        // Inutile donc de faire tourner le code pour ça :)
                        if (!file_exists($base_dir) && !empty($value))
                                if (!mkdir($base_dir, $chmod))
                                        echo 'Unable to create folder "' . $base_dir . '"<br />';
                }
        }
        else
                echo '$dir is not set.';
}

Conclusion :


normalement, il vous suffit de faire :
my_mkdir('test/machin/truc');
pour créer ces trois dossier avec un CHMOD 0700
vous pouvez aussi choisir vous même ce CHMOD :
my_mkdir('test/machin/truc', 0777);
Ajouter un commentaire Commentaires
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
"Quelle est l'utilité de créer une fonction qui recoit des paramètres si un des ces paramètres est réinitialisé dans la signature de la fonction??? (je pense à $chmod = 0700)"

si ce paramètre n'est pas renseigné lorsque tu appelles la fonction la valeur par défaut sera 0700

donc tu peux appeler ta fonction comme ça :

my_mkdir($repertoire);

ou encore my_mkdir($repertoire,0777); par exemple.

"l'utilisateur propriétaire est "apache" ce qui ne permet plus d'effacer le dossier crée par la suite".

Je n'ai jamais essayé, mais je ne pense pas que ça pose de problèmes. Si t'essaies de supprimer un dossier non vide en revanche t'en auras.

a +
Messages postés
1
Date d'inscription
dimanche 11 septembre 2005
Statut
Membre
Dernière intervention
25 novembre 2005

Cette fonction m'a posé des problèmes...premièrement je ne comprend par cette ligne:

function my_mkdir($dir, $chmod = 0700)
(...)

Quelle est l'utilité de créer une fonction qui recoit des paramètres si un des ces paramètres est réinitialisé dans la signature de la fonction??? (je pense à $chmod = 0700)

ensuite je dirais que l'idée de la fonction est tout a fait bonne mais l'utilisation de la fonction mkdir() pose problème car l'utilisateur propriétaire est "apache" ce qui ne permet plus d'effacer le dossier crée par la suite... j'utiliserais plutot ftp_mkdir()...

Qu en pensez-vous???
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
41
l'utilisateur apache n'est pas le même que php...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
9
pourquoi tes questions ne devraient pas se trouver ici ?
Messages postés
336
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
9 juillet 2011
2
pourquoi quand j'ai crée un dossier avec le mode 700 et celui du 777 je ne peux pas y aller je recevois une erreur 403 je ne suis pas autoriser à entrer
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.