Kommunauty
Connexion
Inscription

Supression dossier via php


Furiol Messages : 50

Bonjour,

j'ai un petit problème dans mon code php qui normalement devrait supprimer un dossier, le probléme etant que mon code n'affiche aucune erreur mais le dossier ne se supprime pas

Pouvez vous m'aider s'il vous plait ?

function deleteFile($dossier_traite){
$dossier_traite = ("images/824241660533.png");
    $repertoire = opendir($dossier_traite);

    while(false !== ($fichier = readdir($repertoire))){
      $chemin = $dossier_traite."/".$fichier;
      if ($fichier!="." AND $fichier!="..")
      {
        if (!is_dir($chemin)) //si le fichier trouver est bien un fichier et non un dossier on le supprime
        {
          unlink($chemin);
        }
        else
        {
          deleteFile($chemin);  /*sinon si c'est un dossier on rappelle la fonction deleteFile qui va vider le contenu du dossier et  le supprimer */
        }
      }
    }
    closedir($repertoire); // on ferme le dossier
    rmdir($dossier_traite); // on supprime le dossier
}

Cordialement

vendredi 29 juin 2012

Lucas Messages : 830

Salut !

Ton dossier porte le nom d'une image ? Si ce n'est pas le cas, je ne comprends pas vraiment l'intérêt de la ligne :

$dossier_traite = ("images/824241660533.png");

On traite un dossier, donc on ne peut pas prendre comme valeur une image.

$dossier_traite = "images"; // ou alors tu créés un dossier pour chaque image avec juste le nom, genre "images/824241660533"
$repertoire = opendir($dossier_traite);
vendredi 29 juin 2012

Furiol Messages : 50

non juste un dossier j'ai pas fait attention c'est juste que j'ai essayer plusieurs combinaison mais même avec juste le nom du dossier

$dossier_traite = ("images"); 

j'obtient le meme resultat

vendredi 29 juin 2012

SiMax Messages : 7572

Salut ! Les fichiers à l'intérieur du dossier sont supprimés, eux ?

vendredi 29 juin 2012

Furiol Messages : 50

normalement il supprime tous ce qu'il y a a l'interieur du dossier + le dossier , mais la il suprime rien du tous

vendredi 29 juin 2012

SiMax Messages : 7572

Essaye avec cette fonction trouvée sur php.net :

<?php
function rrmdir($dir) {
    foreach(glob($dir . '/*') as $file) {
        if(is_dir($file))
            rrmdir($file);
        else
            unlink($file);
    }
    rmdir($dir);
}
?>
vendredi 29 juin 2012

Furiol Messages : 50

bonjour ,

je vient d'essayer ton code mais il ne fonctionne pas , d’ailleurs j'ai utiliser plusieurs code trouver sur le net, mais pratiquement a chaque fois je ne reçois pas d'erreur, peut être que cela vient de wamp ?

samedi 30 juin 2012

SiMax Messages : 7572

Bizarre, normalement ça marche directement sur WAMP. Remplace ta fonction par cette fonction "debug" que je viens d'écrire. Ensuite, tu l'exécute normalement et tu me copie-colle le résultat sur le forum

function rrmdir($dir)
{
echo "Début de la fonction<br/>";
echo "Dir : '$dir'<br/>";

if(!is_dir($dir))
{
echo "Le dossier existe bien<br/>";
}
else
{
echo "Le dossier n'existe pas<br/>";
}

echo "<br/>------<br/><br/>";

foreach(glob($dir . '/*') as $file)
{
echo "Fichier : '$file' :";

if(is_dir($file))
{
echo "il s'agit d'un dossier<br/>";
rrmdir($file);
}
elseif(file_exists($file))
{
echo "il s'agit d'un fichier<br/>";
unlink($file);
}
else
{
echo "il ne s'agit ni d'un dossier ni d'un fichier<br/>";
}
}

echo "<br/>Suppression récursive terminée<br/>";

rmdir($dir);

echo "<br/>Fin de la fonction<br/>";
exit;
}
samedi 30 juin 2012

Lucas Messages : 830

Je pense plutôt que le problème vient des droits qui te sont attribués.

Essayes de mettre un chmod devant chaque suppression de fichier :

chmod($fichier, 0777);
unlink($fichier);
samedi 30 juin 2012

Furiol Messages : 50

merci de votre aide ,

alors j'ai d'abord utiliser cette fonction

$dir = '../truc';
function rrmdir($dir)
    {

    echo "Début de la fonction<br/>";
    echo "Dir : '$dir'<br/>";
    
    if(!is_dir($dir))
        {
        echo "Le dossier existe bien<br/>";
        }
    else
        {
        echo "Le dossier n'existe pas<br/>";
        }
    
    echo "<br/>------<br/><br/>";
    
    foreach(glob($dir . '/*') as $file)
        {
        echo "Fichier : '$file' :";
        
        if(is_dir($file))
            {
            echo "il s'agit d'un dossier<br/>";
            rrmdir($file);
            }
        elseif(file_exists($file))
            {
            echo "il s'agit d'un fichier<br/>";
            unlink($file);
            }
        else
            {
            echo "il ne s'agit ni d'un dossier ni d'un fichier<br/>";
            }
        }
    
    echo "<br/>Suppression récursive terminée<br/>";
    
    rmdir($dir);
    
    $message_erreur .= 'Une erreur s\'est produite.';
include("../../../../includes/message/index.php");
    }

et il ne c'est rien passer , aucun message d'erreur et mon dossier ne c'est pas supprimer

puis j'ai tester cette fonction la :

$fichier = '../truc';
unlink($fichier);

et j'ai recu ce message d'erreur :

Warning: unlink(../truc): Permission denied in C:\wamp\www\Site\site\membres\contrats\pannel\commande.php on line 132

et puis après j'ai mis cette fonction :

$fichier = '../truc';
chmod($fichier, 0777);
unlink($fichier);

et j'ai reçu cette erreur :

Warning: unlink(../truc): Permission denied in C:\wamp\www\Site\site\membres\contrats\pannel\commande.php on line 133

j'imagine que sa doit être un problème de permission mais je suis sur wamp

samedi 30 juin 2012

Page suivante »