rss
"warning: mail() [function.mail]: smtp server response: 542 you are not allowed to send your message" Apache configure access to a directory not under root directory Apache does not want to execute perl in a different directory Cdburner iso "is not empty" Could not stat /dev no such file or directory Directory listing denied this virtual directory does not allow contents to be listed. Filezilla server could ,not get home directory Mplayer: could not connect to socket mplayer: no such file or directory failed to open lirc support. you will not be able to use Php warning: fputs(): supplied argument is not a valid stream resource Postfix mailq is not empty Pourquoi attention - non traite par antivirus - warning - not virus scanned] The directory of kernel headers (version 2.6.18) does not match your running kernel (version 2.6.18-6-486) Warning default mime table not found Warning edonkeyserver no1 77.247.178.244:4242 your port is not reachable please review your network config. Warning, the housecall-api did not define a native binding! Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "from:" header missing Warning: move_uploaded_file() [function.move-uploaded-file]: failed to open stream: no such file or directory in Warning: mysql_connect(): host 'localhost' is not allowed to connect to this mysql server in Warning: mysql_fetch_array(): supplied argument is not a valid mysql result resource Warning: mysql_fetch_array(): supplied argument is not a valid mysql result resource in c:\documents and Warning: mysql_fetch_assoc(): supplied argument is not a valid mysql Warning: odbc_result(): supplied argument is not a valid odbc result Warning: require_once(db.php) [function.require-once]: failed to open stream: no such file or directory in Warnung edonkeyserver no1 (77.247.178.244:4242) - your 4662 port is not reachable. please review your network config. Xampp warning: directory mismatch [r] 421 home directory not available - aborting pureftpPlus

Warning: rmdir(..): Directory not empty

Publié par kilian, dernière mise à jour le mercredi 9 juillet 2008 à 23:19:59 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.

Autres Astuces dans la catégorie PHP

Logiciels pertinents trouvés dans les téléchargements
Télécharger Mega Bloc Notes 5.3Mega Bloc Notes - Mega Bloc Notes est un éditeur de texte (TXT/RTF/XLS/DOC/MCW/HTM...) possédant une multitudes de fonctions originales telles...Catégorie: Traitement de texte
Licence: Freeware/gratuit
Télécharger NoTrace 2FNoTrace - NoTrace est un logiciel qui va se charger de nettoyer des points sensibles de votre vie privée. En naviguant sur Internet,...Catégorie: Anonymat/Confidentialité
Licence: Freeware/gratuit
Télécharger Notepad++ 5.0.3Notepad++ - Notepad++ est un editeur de code source qui supporte plusieurs langages. Il s'agit d'un logiciel libre performant et...Catégorie: Développement
Licence: Open Source
Télécharger Notepad2 2.1.19Notepad2 - Notepad2 est un blc-note libre possédant des fonctionnalités avancées de coloration syntaxique. <h2>Fonctionnalités</h2>...Catégorie: Traitement de texte
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Warning: rmdir(..): Directory not empty »