Supprimez tous les fichiers dans un répertoire avec PHP.

  • RedBMedia
  • Proficient
  • Proficient
  • Avatar de l’utilisateur
  • Inscription: Mai 01, 2007
  • Messages: 315
  • Status: Offline

Message Janvier 30th, 2011, 8:16 am

Je suis en train d'écrire un script qui supprime tous les fichiers d'un répertoire appelé «cache». Mon plan est d'obtenir cette configuration de travail, puis exécuter une tâche cron pour chaque heure de mon serveur ne reçoit pas rempli de conneries gaspillage. Donc, de toute façon, heres ce que j'ai à ce jour, et pour quelque raison que sa ne fonctionne pas. Pas d'erreur, sa ne fonctionne pas.

PHP Code: [ Select ]
if ($handle = opendir('cache')) {
   while (false !== ($file = readdir($handle))) {
      unlink($file);
   }
closedir($handle);
}
 
  1. if ($handle = opendir('cache')) {
  2.    while (false !== ($file = readdir($handle))) {
  3.       unlink($file);
  4.    }
  5. closedir($handle);
  6. }
  7.  


Toutes les idées?
Joe Hall
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 30th, 2011, 8:16 am

  • ScienceOfSpock
  • Mastermind
  • Mastermind
  • Avatar de l’utilisateur
  • Inscription: Juil 06, 2004
  • Messages: 1890
  • Loc: Las Vegas
  • Status: Offline

Message Février 1st, 2011, 3:58 pm

Il ya deux questions flagrante avec votre script que je peux voir.

Tout d'abord, $ fichier ne contiendra que le nom du fichier, pas le chemin.
Dans votre cas, vous lisez le répertoire cache / par rapport au script courant, mais vous essayez de supprimer $ fichier, plutôt que de cache / $ file.

Changement:
PHP Code: [ Select ]
unlink($file);

à:
PHP Code: [ Select ]
unlink('cache/'.$file);


Et qui devrait vous permettre de le supprimer correctement les fichiers.

Deuxièmement, vous n'êtes pas à l'exclusion des. ou .. références répertoire (qui entrera dans la liste des fichiers, indépendamment du système d'exploitation.)
Ce sera généralement jeter avertissements autorisation, mais ne s'arrête pas l'exécution du script.
Vous devez ajouter à une instruction if qui exclut les références:
PHP Code: [ Select ]
if ( $file != '.' && $file != '..' )
{
   unlink ( 'cache/'.$file );
}
  1. if ( $file != '.' && $file != '..' )
  2. {
  3.    unlink ( 'cache/'.$file );
  4. }


Si vous rencontrez toujours des problèmes après la fixation de ces choses, alors vous avez un problème d'autorisation. PHP ne peut supprimer les fichiers qui sont détenues par le même processus qu'il s'exécute sous (l'utilisateur apache, dans de nombreux cas). Dans le cas des serveurs partagés, la question de l'autorisation devient beaucoup plus compliqué.

SoS

Afficher de l'information

  • Total des messages de ce sujet: 2 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 170 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC