Creer un répertoire dans un répertoire

Résolu
Signaler
Messages postés
39
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 février 2009
-
Messages postés
39
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 février 2009
-
Bonjour a tous,
S'il vous plait. j'essaye de crée un dossier dans un dossier mais je n'y arrive pas.
Pouvez vous me dire comment dois-je procédé ?
Merci
cordialement

14 réponses

Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
Salut,

Je me suis fait un compte chez cet hébergeur pour t'aider à trouver le problème. Et tu as raison, le problème vient bien de l'hébergeur.

Par défaut on dirait que les erreurs sont masqué (ce qui est ridicule, mais c'est leur choix) alors un ptit coup de error_reporting(E_ALL); nous montre que:

Warning: mkdir() [function.mkdir]:
SAFE MODE Restriction in effect. The script whose uid is 6546 is not
allowed to access /www/hostsnake.com/b/o/d/bodyno/htdocs/chemin owned
by uid 2001 in /www/hostsnake.com/b/o/d/bodyno/htdocs/test.php on line 5

Le problème est donc que Apache ne tourne pas sous le même utilisateur que le script php(ce qui arrivent quand l'hébergeur ne prends pas la peine d'utiliser des mesures pour évité ça, comme suphp, suexec, suid, ruid, et compagnie), ce qui fait que tu n'as pas accès aux fichiers n'ayant pas le même UID.

Pour résumé: ton script crée un dossier (chemin) ayant pour UID celui de apache (2001). Ensuite il essait de créer un dossier dedans celui la (chemin2) mais ton script lui tourne sur le UID de ton FTP (pour moi cétait 6546) alors php lui refuse l'accès au dossier chemin puisqu'il a un UID 2001..

Le Safemod est une plaie et n'aurais jamais dû exister, il est utile que dans le cas d'une paresse (ou une incompétence) de l'hébergeur, mais bon ça c'est un autre débat

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
Salut,

J'ai fait une recherche sur google qui m'a pris 5 minutes et devine ce que j'ai trouvé !!!

bool mkdir ( string pathname [, int mode [, bool recursive [, resource context]]] )
 
mkdir() tente de créer un dossier dans le chemin pathname. 
 
Tu aurais à préciser le mode en base octale, ce qui signifie que tu auras probablement un 0 comme premier chiffre. Le mode sera aussi modifié par le umask courant, que tu peux modifier avec la fonction umask(). 
 
Le paramètre mode est ignoré sous Windows, et il est devenu optionnel depuis PHP 4.2.0.  
 
Le mode par défaut est le mode 0777, ce qui correspond au maximum de droits possible.
 
Exemple
<?php
  mkdir ("/chemin/de/mon/dossier", 0700);
?>

Si t'a besoin d'aide, MP !!!
Messages postés
39
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 février 2009

Merci nicomilville.
Je connais cette fonction, j'ai essayé, mais en créant deux dossiers en même temps, voici mon script :
<?php
mkdir("chemin",0777);
mkdir("chemin/chemin2",0777);
?>
Le dossier 'chemin' se crée normalement, mais le deuxième dossier 'chemin2' ne se crée pas dans le dossier 'chemin'.
Merci
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
C'est normal, je pense que le script ne sais pas encore que ton dossier existe donc je pense que tu peus résoudre ton problème avec un if !!!

Si t'a besoin d'aide, MP !!!
Messages postés
39
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 février 2009

Pareil !!
Je pense que c'est la configuration de l'hébergeur qui n'est pas Bien, parce que j'ai essayé normalement avec d'autres hébergeurs et ça marche très bien.
Vous n'auriez pas une autre idée SVP ?, car j'aimerai tellement rester sur cet hébergeur.
Merci beaucoup
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
j'aurai tendence a faire un if(is_dir(ton répertoire)) {code}

Si t'a besoin d'aide, MP !!!
Messages postés
39
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 février 2009

Moué, j'ai fait et toujours pareil :( Merci quand même, c'est gentil d'avoir essayé de m'aider
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
ça marche pas, peut être est tu sur un serveur qui ne t'appartient pas, peut être qu'il faut utiliser les fonctions de type ftp !!!

Si t'a besoin d'aide, MP !!!
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
Tu est sur que tu a mis :

if(is_dir("chemin")) {
   mkdir("chemin/chemin2",0777);
}

Si t'a besoin d'aide, MP !!!
Messages postés
39
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 février 2009

Oui j'ai fait ça !
Ça marche sur tous les autres Hébergeurs même quand Je fais :
<?php
mkdir("chemin",0777);
mkdir("chemin/chemin2",0777);
?>

sauf celui la
et il m'appartient
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
Bon ba je vais attendre les avis des autre, je reconnais que ton problème me dépasse !!!

a++

Si t'a besoin d'aide, MP !!!
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
Salut,

Nicomilville, tu dis n'importe quoi ici, le script sait très bien que le dossier existe, pas besoin de bidouilles avec if ou peu importe lol.

Merci de lire bien comme il faut la doc http://ca.php.net/manual/fr/function.mkdir.php


On voit très clairement que le mode est modifié par le umask (le mode est de 0777 par défaut de toute façon alors ton argument sert à rien).

Sachant cela, il est possible, bien que peut probable, que le umask ne donne pas les permissions d'écriture au propriétaire par défaut.

Donc tu peux essayer un chmod après la création du premier répertoire.

Par exemple

mkdir('chemin');
chmod('chemin',0777);
mkdir('chemin/chemin2');

Ceci dit il fauderait qu'on voit les messages d'erreurs qu'il te sort. Et tout au long de mon message je suppose que chemin n'existe pas, parce que si il existe et qu'il appartient à quelqu'un d'autre alors forcément le problème est la...

-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Messages postés
39
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 février 2009

Salut yoman64
Merci pour la doc, mais je l'avais déjà vu avant de déposer l'article :D
J'ai essayé ce que tu ma dit mais ça ne veux tjr pas fonctionné :(

Si je mets cette fonction :
mkdir("chemin",0777);
Le dossier se crée normalement avec tous les droits possibles.

Comme Je l'ai déjà dit au début, Je pense que le problème viens de la configuration de l'hébergeur. Voici le lien de l'hébergeur, il est gratuit : http://hostsnake.com
Messages postés
39
Date d'inscription
vendredi 2 novembre 2007
Statut
Membre
Dernière intervention
28 février 2009

Merci yoman64 d'avoir trouvé la source du problème.
Je crois que Je vais changer d'hébergeur ! :D