Pb sur du PHP pour création d'un rep
Résolu
milo1986
Messages postés
126
Date d'inscription
Statut
Membre
Dernière intervention
-
jah655 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
jah655 Messages postés 110 Date d'inscription Statut Membre Dernière intervention -
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); //}
}
}
}
?>
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:
- Pb sur du PHP pour création d'un rep
- Creation compte gmail - Guide
- Création site web - Guide
- Création d'un compte google - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Easy php - Télécharger - Divers Web & Internet
15 réponses
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?
while ($f = readdir($dir))
{
if ($f != "." && $f != "..")
{
if (is_dir($rep."/".$f))
{
if (!is_dir($nom)){ mkdir($nom, 0777); }
}
}
}
C'est mieux ;)
{
if ($f != "." && $f != "..")
{
if (is_dir($rep."/".$f))
{
if (!is_dir($nom)){ mkdir($nom, 0777); }
}
}
}
C'est mieux ;)
<?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.
$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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
Effectivement, j'ai testé en local et non sur mon serveur et là le rep se créé bien, merci pour tout.
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 ?
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 ?
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 ?
celà ne pourrait il pas provenir de la config d'apache ?
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 ????
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 ????
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);
?>
<?
$rep="2007/";
$nom="septembre";
mkdir($rep.$nom,0777);
?>