suppr des fic ds un rép qui est ds un rep... [ - Job's Done - ]

suppr des fic ds un rép qui est ds un rep... [ - Job's Done - ] - PHP - Programmation

Marsh Posté le 28-02-2003 à 16:34:38    

voilà, j'ai des fichiers qui se trouvent dans ce répertoire :  
http://www.monserver.com/img/photos/nom_user/ref_moto
 
tout mes fichiers sont 'includé' dans mon fichier index.php, donc le fichier qui fait mon unlink aussi.
 
je voudrais, depuis mon fichier php, qui se trouve à la racine, supprimer tout les fichier du répertoire ref_moto et ce répertoire ensuite...
 
voilà ce que je fait :  
 

Code :
  1. $dir="img/photos/".$user."/".$ref."";
  2. if (@opendir("$dir" )!=FALSE)
  3.   {
  4.   while (false !== ($file = readdir($dir)))
  5.    {
  6.    if ($file!="." || $file!=".." ){@unlink ("$file" );}
  7.    }
  8.   @closeir ("$dir" );
  9.   @rmdir ("$dir" ):
  10.   }


 
là il me fait une boucle infinie en écrivant :  
 

Warning: readdir(): supplied argument is not a valid Directory resource in c:\program files\easyphp\www\[annonce]\ann\suppr_ann.txt on line 6
> line 6 :   while (false !== ($file = readdir($dir)))
 
Warning: unlink() failed (Permission denied) in c:\program files\easyphp\www\[annonce]\ann\suppr_ann.txt on line 8
> line 8 :    if ($file!="." || $file!=".." ){unlink ("$file" );}


 
nota : j'ai essayé en mettant 'while (false !== ($file = readdir("$dir")))' mais sans améliorations...
 
vous pouvez m'aider parce que là, je nage grave grave grave... [:toukc]


Message édité par xkamui le 02-03-2003 à 22:41:54
Reply

Marsh Posté le 28-02-2003 à 16:34:38   

Reply

Marsh Posté le 28-02-2003 à 16:42:10    

xkamui a écrit :


  while (false != ($file = readdir($dir)))


 
Non ?


Message édité par Taiche le 28-02-2003 à 16:42:35

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 28-02-2003 à 16:45:43    

source : http://www.php.net/manual/en/function.readdir.php
 

Code :
  1. /* This is the correct way to loop over the directory. */
  2.     while (false !== ($file = readdir($handle))) {
  3.         echo "$file\n";
  4.     }
  5. /* This is the WRONG way to loop over the directory. */
  6.     while ($file = readdir($handle)) {
  7.         echo "$file\n";
  8.     }

Reply

Marsh Posté le 28-02-2003 à 16:49:18    

Bon ba non, alors.
Cela dit, à ta place, j'ferais plusieurs trucs :
* vire les @ devant tes fonctions quand t'as une merde. Sinon ça te vire les warnings et les erreurs et ça aide pas au debug.
* fais un echo de ton $dir dans ta boucle comme ça tu sauras où t'en es.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 28-02-2003 à 17:00:44    

pour les @, je les ai viré
 
résultat :  
 

Warning: readdir(): supplied argument is not a valid Directory resource in c:\program files\easyphp\www\[annonce]\ann\suppr_ann.txt on line 6
 
Warning: unlink() failed (Permission denied) in c:\program files\easyphp\www\[annonce]\ann\suppr_ann.txt on line 8
 
img/photos/bozo/1046393344


 
avec bozo = nom_ser et 1046393344 = ref_moto

Reply

Marsh Posté le 28-02-2003 à 20:18:20    

Quelle est la valeur de $dir avant le if? il a peut-être une mauvaise tête

Reply

Marsh Posté le 01-03-2003 à 00:44:31    

hors de la boucle, avant celle-ci :  
$dir=img/photos/bozo/1046393344
 
dans la boucle :  
$dir=img/photos/bozo/1046393344
 
bref, aucune différence... j'suis toujours coincé !!  [:toukc]  :cry:  :cry:

Reply

Marsh Posté le 01-03-2003 à 18:19:44    

File le path complet de ton répertoire. Chu certain que c'est une connerie du style. Par exemple, quand t'exécutes ton script, tu sais quel est le répertoire courant ? Passke si c'est pas celui où y a img/photos/bozo/1046393344 comme sous-répertoires, bin c'est forcé qu'il t'envoie chier [:joce]
Fais un truc genre getcwd() pour connaître le répertoire courant et place-le juste avant l'entrée dans ta boucle.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 02-03-2003 à 05:11:36    

voici l'arborescence de mon répertoire :  
http://xkamui.com.free.fr/divers/hfr/tree.png
 
inclusion de getcwd() avant la boucle :

curent folder : c:\program files\easyphp\www\annonces


 
inclusion de $dir avant la boucle :

img/photos/bozo/1046393344


 
messages d'érreurs pendant la boucle (infinie...) :

Warning: readdir(): supplied argument is not a valid Directory resource in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 9
 
Warning: unlink() failed (Permission denied) in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 11


 
code php et énumération des lignes :  

Code :
  1. 01. <?
  2. 02.  // supression des fichiers !!!
  3. 03.  $dir="img/photos/".$PHP_AUTH_USER."/".$ref."";
  4. 04.  echo "curent folder : ".getcwd()."<br />";
  5. 05.  echo $dir."<br />";
  6. 06.
  7. 07.  if (opendir("$dir" )!=FALSE)
  8. 08.   {
  9. 09.   while (false !== ($file = readdir("$dir" )))
  10. 10.    {
  11. 11.    if ($file!="." || $file!=".." ){unlink ("$file" );}
  12. 12.    echo $dir;
  13. 13.    }
  14. 14.   closeir ("$dir" );
  15. 15.   rmdir ("$dir" );
  16. 16.   }
  17. 17. ?>


Message édité par xkamui le 02-03-2003 à 15:47:16
Reply

Marsh Posté le 02-03-2003 à 11:18:28    

Essaie avec des \ plutôt que des / :D


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 02-03-2003 à 11:18:28   

Reply

Marsh Posté le 02-03-2003 à 15:45:07    

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 3
 
Parse error: parse error, unexpected '\"' in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 3

Reply

Marsh Posté le 02-03-2003 à 18:21:16    

xkamui a écrit :

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 3
 
Parse error: parse error, unexpected '\"' in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 3




 
il faut doubler les \ dans ta chaine:
 
03.  $dir="img\\photos\\".$PHP_AUTH_USER."\\".$ref."";  

Reply

Marsh Posté le 02-03-2003 à 19:39:27    

si je double, j'obtient le même type d'erreur !!
 

curent folder : c:\program files\easyphp\www\annonces
img\photos\bozo\1046393344
 
Warning: readdir(): supplied argument is not a valid Directory resource in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 9
 
Warning: unlink() failed (Permission denied) in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 11

Reply

Marsh Posté le 02-03-2003 à 20:55:13    

carrement pas la meme erreur...  
un coup c la ligne 3, une parse error
 

Citation :

Parse error: parse error, unexpected '\"' in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 3


 
bon c reglé apparemment
 
maintenant tu as ouvert ton repertoire mais tu narrives pas a le lire

Citation :

curent folder : c:\program files\easyphp\www\annonces  
img\photos\bozo\1046393344  
 
Warning: readdir(): supplied argument is not a valid Directory resource in c:\program files\easyphp\www\annonces\ann\suppr_ann.txt on line 9  


 
readdir("$dir" ) .. je crois que c l'ID recup retourné par l'opendir quil faut mettre ici et non pas a nouveau le chemin.
 
bref, lire les msgs derreur, ca a du bon.

Reply

Marsh Posté le 02-03-2003 à 22:41:09    

Ayé !!! c'est bon !!!!
 
voilà ce que j'ai fait et qui marche !!!
 

Code :
  1. $dir="img/photos/".$PHP_AUTH_USER."/".$ref."/";
  2. $folder=@opendir("$dir" );
  3. if ($folder!=FALSE)
  4.   {
  5.   while (false !== ($file = @readdir($folder)))
  6.    { 
  7.    if ($file!='.' && $file!='..')
  8.     {
  9.     @unlink ("".$dir."/".$file."" );
  10.     }
  11.    }
  12.   @rmdir ($dir);
  13. }


 
merci @ tous pour votre aide !!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed