[PHP] Suppression de fichiers et dossier
Résolu
Aroeris
Messages postés
38
Date d'inscription
Statut
Membre
Dernière intervention
-
Aroeris Messages postés 38 Date d'inscription Statut Membre Dernière intervention -
Aroeris Messages postés 38 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie de supprimer les fichiers et dossiers contenue dans un dossier principal puis de supprimer ce fichier principal.
J'ai un peu farfouiller sur le net et j'ai trouver une fonction que j'ai un peu repris sauf que evidemment elle ne fonctionne pas ^^
Comme je n'arrive pas a trouver mon erreur je m'en remets a vous : )
Alors mes problemes viennent du rmdir a la fin de la methode qui me met une erreur en me disant que le dossier n'est pas vide mais comme le code plus haut est censé supprimé justement tout ce qui sy trouve je suis un peu perplexe.
Et meme en commentant cette ligne rien n'est supprimé a l'interieur du fichier et j'ai le droit a "Maximum execution time of 60 seconds exceeded"
Voici ma fonction :
Jevous remercie par avance
J'essaie de supprimer les fichiers et dossiers contenue dans un dossier principal puis de supprimer ce fichier principal.
J'ai un peu farfouiller sur le net et j'ai trouver une fonction que j'ai un peu repris sauf que evidemment elle ne fonctionne pas ^^
Comme je n'arrive pas a trouver mon erreur je m'en remets a vous : )
Alors mes problemes viennent du rmdir a la fin de la methode qui me met une erreur en me disant que le dossier n'est pas vide mais comme le code plus haut est censé supprimé justement tout ce qui sy trouve je suis un peu perplexe.
Et meme en commentant cette ligne rien n'est supprimé a l'interieur du fichier et j'ai le droit a "Maximum execution time of 60 seconds exceeded"
Voici ma fonction :
public static function deleteFiles($dossier) { $bool=true; $ouverture=opendir($dossier); if (!$ouverture) $bool=false; while($fichier=readdir($ouverture)) { if ($fichier == '.' || $fichier == '..') if (is_dir($dossier."/".$fichier)) { $r=Utilisateur::deleteFiles($dossier."/".$fichier); if (!$r) $bool=false; } else { if(is_file($dossier."/".$fichier)) { $r=@unlink($dossier."/".$fichier); if (!$r) $bool=false; } } } closedir($ouverture); $r=rmdir($dossier); if (!$r) $bool=false; return $bool; }
Jevous remercie par avance
A voir également:
- [PHP] Suppression de fichiers et dossier
- Forcer suppression fichier - Guide
- Dossier appdata - Guide
- Mettre un mot de passe sur un dossier - Guide
- Renommer tous les fichiers d'un dossier - Guide
- Explorateur de fichiers - Guide
2 réponses
Y a un vis caché avec unlink...:
Tu te trouves actuellement dans le bon répertoire, alors essaye avec:
$r=unlink($fichier); // retire le nom du répertoire,,, ca devrait aller
Tu te trouves actuellement dans le bon répertoire, alors essaye avec:
$r=unlink($fichier); // retire le nom du répertoire,,, ca devrait aller
Pour ceux qui liront probablement ce poste j'ai trouver mon probleme il fallait enlever le "@" devant unlink qui masquait l'erreur
et mettre la ocmmande "continue"
Voici ce que ça donne :
et mettre la ocmmande "continue"
Voici ce que ça donne :
public static function deleteFiles($dossier) { $bool=true; $ouverture=opendir($dossier); if (!$ouverture) $bool=false; while($fichier=readdir($ouverture)) { if ($fichier == '.' || $fichier == '..') continue ; if (is_dir($dossier."/".$fichier)) { $r=Utilisateur::deleteFiles($dossier."/".$fichier); if (!$r) $bool=false; } else { if(is_file($dossier."/".$fichier)) { $r=unlink($dossier."/".$fichier); if (!$r) $bool=false; } } } closedir($ouverture); $r=rmdir($dossier); if (!$r) $bool=false; return $bool; }