IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Suppression de fichiers avec unlink


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    761
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 761
    Points : 274
    Points
    274
    Par défaut Suppression de fichiers avec unlink
    Bonjour,
    Voilà plusieurs heures que je m'arrache les cheveux.
    Je vous soumets mon code que j'ai réduit à sa plus simple expression pour mettre en évidence le phénomène.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $backupdir = dirname(__FILE__);
    echo $backupdir;
    $backupfiles = array();
     
    foreach (scandir($backupdir) as $file) {
    		if( substr($file, -4, 4) == ".zip" ) {
    			$backupfiles[] = $file;
    		}
    }
    print_r($backupfiles);
     
    if ($backupfiles !=null) {
    	foreach ($backupfiles as $backupfile) {
    		unlink($backupfile);
    	}
    }
    à la ligne 2, je vérifie que le répertoire courant est bien "/home/u654156753/export"

    à la ligne 10, je vérifie que $backupfiles est bien une chaine contenant 5 fichiers zip contenu dans le répertoire "/home/u654156753/export"

    à la ligne 14, je déclenche un tas d'erreur comme si ces fichiers n'existaient pas.

    Voilà le résultat complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /home/u654156753/exportArray ( [0] => u654156753_forum.1432329487.sql.zip [1] => u654156753_forum.1432329753.sql.zip [2] => u654156753_forum.1432329952.sql.zip [3] => u654156753_forum.1432330039.sql.zip [4] => u654156753_forum.1432330185.sql.zip )
    Warning: unlink(u654156753_forum.1432329487.sql.zip): No such file or directory in /home/u654156753/export/backup.php on line 14
     
    Warning: unlink(u654156753_forum.1432329753.sql.zip): No such file or directory in /home/u654156753/export/backup.php on line 14
     
    Warning: unlink(u654156753_forum.1432329952.sql.zip): No such file or directory in /home/u654156753/export/backup.php on line 14
     
    Warning: unlink(u654156753_forum.1432330039.sql.zip): No such file or directory in /home/u654156753/export/backup.php on line 14
     
    Warning: unlink(u654156753_forum.1432330185.sql.zip): No such file or directory in /home/u654156753/export/backup.php on line 14
    Pourquoi le unllink ne voit-il pas les fichiers ?

  2. #2
    Membre actif Avatar de Ethan 0x21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 261
    Points
    261
    Par défaut
    Bonsoir noftal,


    Qu'est ce que te renvoit la fonction "getcwd()" ?

    Car si dirname(__FILE__) te renvoit le bon répertoire, c'est certainement le PWD utilisé par unlink qui n'est pas le même, car en fonction de
    l'architecture de ton appli, le retour de getcwd et dirname(__FILE__) peut varier.

  3. #3
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    761
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 761
    Points : 274
    Points
    274
    Par défaut
    Bien vu, la commande getcwd ne me renvoie pas le même répertoire.
    Je suppose que la plupart des instructions PHP manipulant des fichiers le font dans le répertoire indiqué par getcw (alias répertoire courant) ?
    J'ai donc fait un chdir(dirname(__FILE__) et tout est rentré dans l'ordre.
    J'avoue quand même trouver bien mystérieux le fait que dirname et getcwd ne donnent pas la même chose. J'ai encore beaucoup à apprendre.
    C'est quoi PWD ?
    Merci pour ton aide.

  4. #4
    Membre actif Avatar de Ethan 0x21
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2006
    Messages : 120
    Points : 261
    Points
    261
    Par défaut
    PWD c'est un abus de language par habitude désolé, c'est le nom d'une commande sous Unix&Co qui donne le chemin du répertoire courant...

    En fait en général getcwd() == dirname(__FILE__), cependant dans le cas d'inclusion via include, require, etc... dirname(__FILE__) va varier et renvoyer le chemin vers le fichier stockant actuellement le code PHP qui est executer, c'est pourquoi il faut se baser sur getcwd pour savoir quel est réelement le repertoire courant, car dirname(__FILE__) c'est juste le chemin vers le script PHP actuellement executé.

  5. #5
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    761
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 761
    Points : 274
    Points
    274
    Par défaut
    Merci pour ces précisions. D'ailleurs, j'en profite pour te poser une question qui me taraude depuis pas mal de temps.
    Est-ce que les instructions include et require ont un comportement différent en terme de réponse à l'instruction getcwd ou dirname ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème suppression fichier avec unlink()
    Par proxichou dans le forum Langage
    Réponses: 3
    Dernier message: 20/10/2010, 11h02
  2. [FTP] Suppression de fichiers avec unlink
    Par rodgeur62 dans le forum Langage
    Réponses: 8
    Dernier message: 03/06/2008, 11h45
  3. Réponses: 9
    Dernier message: 05/12/2007, 14h14
  4. Suppression de fichiers avec csh
    Par mavina dans le forum Linux
    Réponses: 9
    Dernier message: 28/04/2006, 12h10
  5. Suppression impossible d'un fichier avec unlink
    Par oli-ola dans le forum Langage
    Réponses: 11
    Dernier message: 04/01/2006, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo