Suppression dossier

Suppression dossier - PHP - Programmation

Marsh Posté le 24-05-2005 à 15:29:35    

Salut à tous,
 
je sais ce sujet à surement déja été traité mais là, je craque.  :fou:  
Voici mon script :
function efface_rep($repAeffacer)  
{
 if(is_dir($repAeffacer))  
 { $rep=opendir($repAeffacer);
  while($fichier=readdir($rep))
  {
   if(is_file($fichier)) unlink($fichier);
   else efface_rep($fichier);
  }
  closedir($repAeffacer);
  rmdir($repAeffacer);
}}
et je ne comprend pourquoi la seule chose qu'il fait c'est m'afficher :
"apache.exe a généré des erreurs et sera fermé par windows. Vous devrez redémarrer le programme. Un journal des erreurs est en cours de création."
Journal des erreurs évidemment vide !!
 :pt1cable:  
HELP PLEASE !!

Reply

Marsh Posté le 24-05-2005 à 15:29:35   

Reply

Marsh Posté le 24-05-2005 à 15:46:28    

readir renvoie les dossiers "." et ".." tu sembles l'avoir oublié.
 
de plus tu dois effacer le fichier $repAeffacer.'/'.$fichier
et dans le meme genre tu dois lancer ta recursivite avec $repAeffacer.'/'.$fichier
 
si tu avais mis des echos pour debuger ton script tu aurais trouvé tout seul assez rapidement.


Message édité par afbilou le 24-05-2005 à 16:17:25
Reply

Marsh Posté le 25-05-2005 à 11:01:26    

Ca ne fonctionne toujours pas. Le script parcourt bien l'arbo mais ne supprime pas les fichiers et ne peut donc pas supprimer les répertoires non vides.
Je pense que c'est une histoire de pointeur.

Reply

Marsh Posté le 25-05-2005 à 11:06:25    

Reposte ton script corrigé pour voir stp ?
Ca semble louche que ca ne fonctionne pas. Quel hebergeur ?

Reply

Marsh Posté le 25-05-2005 à 11:28:55    

J'utilise un serveur local pour faire tourner mon script, le corrigé donne ça :
function efface_rep($repAeffacer)  
{
  //supprime le répertoire d'arrivé s'il existe
  if(is_dir($repAeffacer))  
  { $rep=opendir($repAeffacer);
   echo("On ouvre : $repAeffacer" );
    while($fichier=readdir($rep))  
    {  
      if(($fichier!="." ) && ($fichier!=".." ))
      {  
       if(is_file($fichier))
          {
   unlink ($repAeffacer.'/'.$fichier);
          }
       else
         efface_rep($repAeffacer.'/'.$fichier);
      }
    }
    closedir($rep);
    rmdir($repAeffacer);
  }}
 
Je ne comprend pas vraiment le pb

Reply

Marsh Posté le 25-05-2005 à 11:33:35    

Toujours le meme probleme ... is_file($rep.'/'.$ficher)

Reply

Marsh Posté le 25-05-2005 à 11:34:20    

ça serait pas plutôt :

Code :
  1. if(is_file($repAeffacer.'/'.$fichier))

Reply

Marsh Posté le 25-05-2005 à 11:39:18    

MERCI !!!!!!!  :jap:  
 
Ca fonctionne (logique, l'info quand c'est correctement programmé, ça fonctionne).

Reply

Sujets relatifs:

Leave a Replay

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