2010-10-25 25 views
0

J'essaie de supprimer un fichier sur le serveur. Voici le code que j'utilise.Obtenez un fichier 0 Ko après l'utilisation de la méthode PHP unlink()

function ServerDel($file){ 
     $file = realpath($file); 
     echo ($file); 
     $fh = fopen($file, 'w') or die("can't open file"); 
     fclose($fh); 
     if(unlink($file)) 
      echo"Delete the file successfully."; 
     else 
      echo "Failed to delete."; 
} 

Mais après avoir exécuté le code, le fichier existe toujours et devient 0KB. Quelqu'un sait comment contourner cela?

+0

Pourquoi vous ouvrir le fichier juste pour le supprimer? Recherchez-vous la fonction ['file_exists'] (http://php.net/file_exists)? – deceze

+0

De plus, obtenez-vous le message 'successful' ou' failed '? Le rapport d'erreurs est-il actif? Affiche-t-il un avertissement? – deceze

+0

Il s'agit de vérifier si le fichier est ouvert par d'autres applications. J'ai maintenant l'erreur "Impossible de supprimer". – Rachel

Répondre

1

utilisez a drapeau dans fopen() au lieu de w.

$fh = fopen($file, 'a') or die("can't open file"); 

Essayez ceci:

function ServerDel($file){ 
     $rfile = realpath($file); 
     echo ($rfile); 
     if (file_exists($rfile)) { 
      if(unlink($rfile)) { 
       echo "Delete the file successfully."; 
      } else { 
       echo "Failed to delete."; 
      } 
     } else { 
      echo "File does not exist"; 
     } 
} 
+0

Merci pour la réponse rapide. J'ai changé le drapeau et maintenant je reçois "Échec à supprimer". msg. – Rachel

+0

Je cours sous Windows 2003, si cela est important. Quel est le tag pour? – Rachel

+0

en réalité, l'indicateur 'w' tronque le fichier à la longueur zéro. Je suis en train d'éditer ma réponse. – Ruel