[PHP] Suppression de fichiers et dossier

Résolu
Aroeris Messages postés 44 Statut Membre -  
Aroeris Messages postés 44 Statut Membre -
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 347 Statut Membre 29
 
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 44 Statut Membre
 
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