Creer un répertoire dans un répertoire

Résolu
mouloudikhaled Messages postés 39 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 28 février 2009 - 3 avril 2008 à 16:14
mouloudikhaled Messages postés 39 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 28 février 2009 - 4 avril 2008 à 12:05
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

yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
4 avril 2008 à 12:00
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  
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 avril 2008 à 17:01
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 !!!
0
mouloudikhaled Messages postés 39 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 28 février 2009
3 avril 2008 à 17:08
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
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 avril 2008 à 17:26
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 !!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mouloudikhaled Messages postés 39 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 28 février 2009
3 avril 2008 à 17:37
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
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 avril 2008 à 18:00
j'aurai tendence a faire un if(is_dir(ton répertoire)) {code}

Si t'a besoin d'aide, MP !!!
0
mouloudikhaled Messages postés 39 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 28 février 2009
3 avril 2008 à 18:12
Moué, j'ai fait et toujours pareil :( Merci quand même, c'est gentil d'avoir essayé de m'aider
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 avril 2008 à 18:34
ç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 !!!
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 avril 2008 à 18:40
Tu est sur que tu a mis :

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

Si t'a besoin d'aide, MP !!!
0
mouloudikhaled Messages postés 39 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 28 février 2009
3 avril 2008 à 19:07
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
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
3 avril 2008 à 19:56
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 !!!
0
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
4 avril 2008 à 05:51
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  
0
mouloudikhaled Messages postés 39 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 28 février 2009
4 avril 2008 à 11:13
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
0
mouloudikhaled Messages postés 39 Date d'inscription vendredi 2 novembre 2007 Statut Membre Dernière intervention 28 février 2009
4 avril 2008 à 12:05
Merci yoman64 d'avoir trouvé la source du problème.
Je crois que Je vais changer d'hébergeur ! :D
0
Rejoignez-nous