[PHP] Suppression de fichiers et dossier

Résolu/Fermé
Aroeris Messages postés 38 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 4 juin 2013 - 4 juin 2010 à 12:09
Aroeris Messages postés 38 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 4 juin 2013 - 4 juin 2010 à 19:40
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 :

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:

2 réponses

louloute300 Messages postés 335 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 28 novembre 2012 29
4 juin 2010 à 12:41
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
1
Aroeris Messages postés 38 Date d'inscription mercredi 14 janvier 2009 Statut Membre Dernière intervention 4 juin 2013
4 juin 2010 à 19:40
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 :
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;
		}
0