Pb sur du PHP pour création d'un rep

Résolu/Fermé
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 - 14 sept. 2007 à 11:31
jah655 Messages postés 110 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 20 mars 2014 - 20 sept. 2007 à 14:35
Bonjour,

Voilà en fait mon script doit créer automatiquement un repertoire selon le mois en cours, lorsque je l'execute il ne me renvois pas d'erreur mais ne créé pas le repertoire alors que (j'ai vérifié) les droit du repertoire où il doit etre créé sont en 777....

voici le code :

<?php
$anneesco = $_POST['anneesco'];

$nom_jour_fr = array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi");
$mois_fr = Array("", "janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "août",
"septembre", "octobre", "novembre", "décembre");

list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y"));

$nom = "$mois_fr[$mois]";
echo $nom;
$rep = 'PDF/'.$anneesco.'/';
$dir = opendir($rep);
function dd($date)
{
return date("d/m/Y H:i:s", $date);
}
while ($f = readdir($dir))
{
if ($f != "." && $f != "..")
{
if (is_dir($rep."/".$f))
{

if (!is_dir($nom)){}

else{
mkdir($nom, 0777); //}

}
}
}
?>
A voir également:

15 réponses

snoopy5.0 Messages postés 11 Date d'inscription dimanche 11 mai 2003 Statut Membre Dernière intervention 14 septembre 2007
14 sept. 2007 à 11:37
et si tu mets un message dans ton block if (!is_dir($nom)){ echo "Pas un répertoire";} ce message ne s'afficherait il pas?
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
14 sept. 2007 à 11:43
while ($f = readdir($dir))
{
if ($f != "." && $f != "..")
{
if (is_dir($rep."/".$f))
{

if (!is_dir($nom)){ mkdir($nom, 0777); }
}
}
}

C'est mieux ;)
0
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 22
14 sept. 2007 à 12:38
Merci du conseil ;)

mais ça ne marche pas.... v m'arracher les cheuveux....
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
14 sept. 2007 à 13:09
<?php
$anneesco = $_POST['anneesco'];

$nom_jour_fr = array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi");
$mois_fr = Array("", "janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "août",
"septembre", "octobre", "novembre", "décembre");

list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y"));

$nom = "$mois_fr[$mois]";
echo $nom;
$rep = 'PDF/'.$anneesco.'/';
$dir = opendir($rep);
function dd($date)
{
return date("d/m/Y H:i:s", $date);
}
while ($f = readdir($dir))
{
if ($f != "." && $f != "..")
{
if (is_dir($rep."/".$f))
{

if (!is_dir($nom)){}

else{
mkdir($nom, 0777); //}

}
}
}
?>

ton problème vient de la boulce que j'ai mis en gras :

tu dis si il n'existe pas de répertoire $nom => ne rien faire sinon créer le répertoire.
C'est plutot l'inverse :

if (!is_dir($nom)){mkdir($nom, 0777); }

Ce qui donne le code complet :

<?php
//$anneesco = $_POST['anneesco'];
$anneesco="2005"; // valeur pour test

$nom_jour_fr = array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi");
$mois_fr = Array("", "janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "août",
"septembre", "octobre", "novembre", "décembre");

list($nom_jour, $jour, $mois, $annee) = explode('/', date("w/d/n/Y"));

$nom = "$mois_fr[$mois]";
echo $nom;
//$rep = 'PDF/'.$anneesco.'/';
$rep='.'; // valeur pour test
$dir = opendir($rep);
function dd($date)
{
return date("d/m/Y H:i:s", $date);
}
while ($f = readdir($dir))
{
if ($f != "." && $f != "..")
{
if (is_dir($rep."/".$f))
{

if (!is_dir($nom)){ mkdir($nom, 0777); }
}
}
}
?>

J'ai modifié les variables $anneesco et $rep pour valider le bon fonctionnement du script.
0

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

Posez votre question
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 22
14 sept. 2007 à 21:21
merci du conseil je test ca lundi en arrivant au bureau et je te dit si sa marche
0
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 22
17 sept. 2007 à 08:17
Bon ben merci quand même mais je suis au regret de t'annoncer que cela ne me créer aucun rep, est ce que cela pourrait provenir des droits d'écriture sur mon serveur, bien que j'ai déjà vérifier mais j'ai mis mes dossiers avec tous les droits pour tout le monde (pour les besoins du test)
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
17 sept. 2007 à 10:07
Oui, j'ai testé le script sur mon windows et le rep se créé bien donc ça vient de ton serveur.
0
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 22
17 sept. 2007 à 11:02
Effectivement, j'ai testé en local et non sur mon serveur et là le rep se créé bien, merci pour tout.
0
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 22
17 sept. 2007 à 15:44
Petit ajout :

Comment se fait il alors que je peux uploader un fichier sur le serveur via un script php mais que la création de dossier ne soit pas autorisée ?
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
17 sept. 2007 à 20:34
Essaie mkdir("test",777); au lieu de mkdir("test",0777);
0
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 22
19 sept. 2007 à 09:46
Non ce n'est tjs pas bon et puis php prend la valeur en octale : si on met 777 il va comprendre 1411 ce qui va donner des droits bizards comme r----x--t, c'est pour cela qu'il faut bien mettre 0777.

celà ne pourrait il pas provenir de la config d'apache ?
0
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 22
19 sept. 2007 à 11:24
Petit ajout :

Après plusieurs prises de tête, je me suis apperçu que le script créé bien le repertoire mais pas au bon endroit, je m'explique :
J'ai à la raine de mon site un rep nommé PDF, dans ce rep pdf j'ai des rep correspondant à des années scolaires (2007-2008, 2008-2009,...) le script parcour donc un de ces rep définit par une variable (par exemple : PDF/2007-2008) il vérifie la présence ou non du rep correspondant au mois en cours si le rep n'existe pas il le créé, voilà où se situe le pb : il ne créé pas le rep ou plutôt il ne le créé pas au bon endroit : après execution je trouve un rep nommé septembre (puisque l'on est en septembre...) créé à la racine du site... pourquoi donc ????
0
pitxu Messages postés 689 Date d'inscription vendredi 7 septembre 2007 Statut Membre Dernière intervention 25 mars 2015 94
19 sept. 2007 à 16:14
Ta variable $nom comporte le nom du fichier, il faut que tu insères une seconde variable pour indiquer le chemin.

<?
$rep="2007/";
$nom="septembre";
mkdir($rep.$nom,0777);
?>
0
milo1986 Messages postés 126 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 30 août 2011 22
20 sept. 2007 à 12:40
Vi en fait, je me suis rendu compte en testant que si on lui indique le chemin où le rep doit etre créé dans la fonction de création. Merci pour tout
0
jah655 Messages postés 110 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 20 mars 2014
20 sept. 2007 à 14:35
Bonjour ,
je ch. une formation d'internet gratuit en ligne svp.
Merci si quelqu'un peut m'aider...
0