Flux rss
Collection CommentÇaMarche.net

Warning: rmdir(..): Directory not empty

Bookmark Ajouter aux favoris / Partager
Dernière mise à jour le 9 juillet 2008 à 23:19 par kilian
Publié par kilian


Introduction


Lorsque vous tentez d'effacer un dossier en PHP, il peut arriver que vous rencontriez l'erreur suivante:
Warning: rmdir(..): Directory not empty
Eh oui! Vous ne pouvez pas effacer un répertoire avec rmdir si celui-ci n'est pas vide. Il va donc falloir utiliser une fonction composée par vos soins. L'idéal est d'utiliser une fonction récursive qui entre dans le répertoire, le vide puis l'efface. Le fait que cette fonction soit récursive fera en sorte de se rappeler elle-même dans chaque sous-répertoire et ainsi de suite.

Voici à quoi ce genre de fonction peut ressembler:

Le code de la fonction (compatible PHP 5 ou supérieur)


<?

function rmdir_recursive($dir)
{
	//Liste le contenu du répertoire dans un tableau
	$dir_content = scandir($dir);
	//Est-ce bien un répertoire?
	if($dir_content !== FALSE){
		//Pour chaque entrée du répertoire
		foreach ($dir_content as $entry)
		{
			//Raccourcis symboliques sous Unix, on passe
			if(!in_array($entry, array('.','..'))){
				//On retrouve le chemin par rapport au début
				$entry = $dir . '/' . $entry;
				//Cette entrée n'est pas un dossier: on l'efface
				if(!is_dir($entry)){
					unlink($entry);
				}
				//Cette entrée est un dossier, on recommence sur ce dossier
				else{
					rmdir_recursive($entry);
				}
			}
		}
	}
	//On a bien effacé toutes les entrées du dossier, on peut à présent l'effacer
	rmdir($dir);
}
?>

Exemple pour effacer le répertoire "machin"
@rmdir_recursive('machin');
?>

Mise en garde pour la sécurité


Une petite mise en garde: si cette fonction échoue, comme par exemple dans le cas où vous n'avez pas la permission d'effacer un fichier, vous verrez un message d'erreur sur la page web qui risque de donner des renseignements à l'utilisateur sur le contenu de vos répertoires. C'est pourquoi il est préférable de faire précéder l'appel de cette fonction par un arobase pour ne pas afficher les messages d'erreur.
PHP - Warning: mail(): sendmail_from not set Bonjour a tous, J'ai une appli en php qui tourne bien en local avec easy php !!! Mais une fois que je la mets sur le serveur elle me met le message suivant : Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in... www.commentcamarche.net/forum/affich-2740541-php-warning-mail-sendmail-from-not-set
[mandrake 10.1] la commabnde rmdir (Résolu) Bonjour, Je souhaite utiliser la commande rmdir pour effacer des répertoires en mode texte. Au préalable je me suis loggé en root, mais lorsque je tape rmdir /usr/local/toto par exemple j'ai le message suivant : directory not empty ! Alors... www.commentcamarche.net/forum/affich-2010020-mandrake-10-1-la-commabnde-rmdir
Error 404 - file or directory not found (Résolu) Bonjour, Je suis windows98 et ie6 et j'ai un problème quand je clique sur certains liens comme celui-ci par exemple : http://agnes.vestris.com/cgi-one/AgnesDirector Je reçois une page blanche avec le message "The page cannot be found" "error 404 -... www.commentcamarche.net/forum/affich-648891-error-404-file-or-directory-not-found
Erreur: xvidcore.dll not foundProblème: Vous avez une erreur "xvidcore.dll not found" lorsque vous essayez de lire une vidéo? Il est très facile et rapide de résoudre ce problème, suivez la résolution ci-dessous. Solution: Rendez-vous sur ce lien: http://www.dll... www.commentcamarche.net/faq/sujet-6153-erreur-xvidcore-dll-not-found
Phpize: command not foundMalgré l'installation de php, lors de l'installation d'une extension pecl, le message suivant apparait: sh: phpize: command not found ERROR: `phpize' failed sous Deiban, la solution se trouve dans l'installation du packet php5-dev qui contient la... www.commentcamarche.net/faq/sujet-8212-phpize-command-not-found
Comment ajouter un site à l'Open Directory ProjectExtrait des recommandations de ODP ou DMOZ L'Open Directory Project est un répertoire web de ressources Internet. Un répertoire web ressemble un peu à une énorme bibliothèque de recherche. Le répertoire est ordonné par sujets rangés dans un ordre... www.commentcamarche.net/faq/sujet-9776-comment-ajouter-un-site-a-l-open-directory-project
Impossibilité de supprimer mes fichiers ftp ! (Résolu)Bonjour, J'essaye en vain de supprimer mes fichiers de mon site via filezilla !!! Apparemment après quelque recherche, il s agirait des fichiers cachés qu il ne voudrait pas supprimer. La réponse de filezilla est:Réponse : 550 Can't remove directory:... www.commentcamarche.net/forum/affich-12450501-impossibilite-de-supprimer-mes-fichiers-ftp
HTTP 404 NOT FONDBonjour, Je suis windowsXP et j'ai un problème quand je clique sur certains liens comme celui-ci par exemple : Je reçois une page blanche avec le message "The page cannot be found" "error 404 - file or directory not found". Quand je tape l'adresse... www.commentcamarche.net/forum/affich-4276225-http-404-not-fond
IMGBURN me dit disc not empty avec DVD viergeBonjour, tout le monde Je viens vers vous, car j'ai un problème avec IMGBURN j'ai une cloche neuve de DVD-R verbatim, j'arrive à graver environ 7dvd sur 10 et les 3 restant il me dit "Disc not empty "donc je ne peux pas les graver alors que je suis... www.commentcamarche.net/forum/affich-11676283-imgburn-me-dit-disc-not-empty-avec-dvd-vierge
Télécharger Empty Temp FoldersAprès seulement quelques jours d’utilisation le PC est déjà encombré par des fichiers temporaires, inutiles mais très volumineux. Il faut à tout prix se débarrasser ces fichiers temporaires pour gagner plus d’espace. Empty Temp Folders est un... www.commentcamarche.net/telecharger/telecharger-34056017-empty-temp-folders
Active DirectoryPrésentation de Active Directory Active Directory est le nom du service d'annuaire de Microsoft apparu dans le système d'exploitation Microsoft Windows Server 2000. Le service d'annuaire Active Directory est basé sur les standards TCP/IP : DNS,... www.commentcamarche.net/contents/activedirectory/active-directory-intro.php3
Principes d'Active DirectoryPrincipe de fonctionnement d'Active Directory Active Directory permet de représenter et de stocker les éléments constitutifs du réseau (les ressources informatiques mais également les utilisateurs) sous formes d'objets, c'est-à-dire un ensemble... www.commentcamarche.net/contents/activedirectory/active-directory-principes.php3