[PHP] Suppression de fichiers et dossier
Résolu
Aroeris
Messages postés
37
Date d'inscription
Statut
Membre
Dernière intervention
-
Aroeris Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
Aroeris Messages postés 37 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
- Renommer tous les fichiers d'un dossier - Guide
- Fichiers epub - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - 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;
}