Supression de fichier en PHP avec unlink(URL)

Résolu/Fermé
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 16 juil. 2008 à 17:03
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 - 8 août 2008 à 09:24
Bonjour, m'etant renseigner sur la supression de fichier en php, j'utilise la fonction unlink(chemin) :

Voici mon code :

 $query = "SELECT *  FROM docs WHERE id = ".$id;
  $result = mysql_query($query, $cnx);
  while($row = mysql_fetch_row($result))
  {
  $id     	= $row[0];
  $type 	= $row[1];
  $url	 = $row[4];
  
  //$lien="/docs/$type/$url";
  //$lien="C:\Program Files\EasyPHP 2.0b1\www\docs\Référentiels\Copie.doc";
    $lien="..\docs\Référentiels\Copie.doc";
    unlink('$lien');
  echo"lien $lien"; 


dans les trois cas de $lien j'ai le droit à un

Warning: unlink($lien) [function.unlink]: No such file or directory in C:\blablabla\sitelocale\reblablabla


Alors que mon echo affiche a chaque fois le bon ien avec l'extension du fichier...
D'ou sa proviendrais?
A voir également:

14 réponses

croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
7 août 2008 à 19:34
if( file-exists( "../documents/$dossier/$dossier2" ) )
   unlink( "../documents/$dossier/$dossier2" ); 
else
   echo "ce fichier n'existe pas";
6
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
8 août 2008 à 09:24
Salut croy, merci a toi.
C'est exactement ce qu'il me fallait.

Mais avec un '_' au lieu du '-' file_exists.

C'est pratique comme fonction ;)

Merci, j'attaque le reste maintenant !! je n'arrive pas a parser une infos et d'autres petit soucis...

A+
3
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 18:11
Essaye avec un chemin complet :
unlink( "C:\Program Files\EasyPHP 2.0b1\www\doss\text.txt" );
1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 18:15
en dur unlink( "C:\Program Files\EasyPHP 2.0b1\www\doss\text.txt" ); sa marche nickel par contre il n'aime pas les antislash, car au lieu de lire \texte il l'interprete comme "\t" +"exte".

Maintenant je n'ai plus qu'a travailler tout sa pour rendre mes liens dynamiques...
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 18:21
J'ai remit mes liens mes variables et la supression des documents hors de mon repertoires se passe a merveille ...

voici mon code

unlink( "../docs/$type/$url" );


Merci pour votre aide et votre patience
1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
5 août 2008 à 10:50
je remonte un peu ce post.....

si un fichier est supprimé et je redemande la supression ... (enregistrement dans la base toujours present mais le fichiers n'existe plus)

j'ai l'erreur :

Warning: unlink(../dossier/dossier2/document_word.doc) [function.unlink]: No such file or directory in C:\Program Files\EasyPHP 2.0b1\www\fonctions\suppr.php on line 127


j'essai de contourner cette erreur avec un :

// suppression du document
unlink( "../documents/$dossier/$dossier2" );
if (unlink = false)
echo "<script>alert('Le document n'existe plus');</script>";




Sa ne marche pas (la comparaison est foireuse)
Comment réaliser cette fonction svp ?
Merci
1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
5 août 2008 à 13:46
je relance donc, je n'ai pas trouver comment exploiter le "false"
1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
16 juil. 2008 à 17:29
Bonjour,

Si ton fichier .doc est dans le même dossier que ta page avec ton code PHP, la ligne suivante est fausse:

$lien="..\docs\Référentiels\Copie.doc";


Dans ce cas il faudrai mettre:

$lien="docs\Référentiels\Copie.doc";


En fait ça dépends d'ou est ta page d'origine.
Sinon, met :

$lien="\docs\Référentiels\Copie.doc";


Normalement il te renverra sur la racine et suivra l'ordre des dossiers du lien.
0
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 17:32
Remplace
unlink('$lien');
par
unlink( $lien );
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
16 juil. 2008 à 17:35
son message disais qu'il ne trouvais pas la page, pas forcement que sa variable était incorrecte.

No such file or directory in C:\blablabla\sitelocale\reblablabla 


Lien est bien présent, donc la variable est correcte. Je pense que c'est le chemin qui ne l'est pas.
-1
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 17:43
Il reste que le code donné (unlink( '$lien' );) ne peut pas marcher et que c'est la première chose à modifier.
0
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 17:49
Salut, le chemin est le bon, le document ne fait pas partie du répertoire ou il y a mon script php.

Je ne comprends pas pourquoi le fichier ne s'efface pas. J'ai lu une cinquantaine de post et vu un peu de tout mais a chaque fois je n'arrive pas a supprimer mes fichiers...


J'ai même vu un exemple qui à fonctionner pour un membre :


$ouverture= opendir("../dossier2/dossier2");
unlink("../dossier2/dossier2/test.jpg");
closedir($ouverture); 


Ce qui me donnerais par exemple avec des valeurs en dur :
$ouverture= opendir("../docs");
unlink("../docs/text.txt");
closedir($ouverture); 


Mais sa ne marche toujours pas.. :( étrange , très étrange même ...
0
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
16 juil. 2008 à 17:53
ça pourrai pas venir des fonctionnalités et extensions de PHP qui ne serai pas activé ??
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 18:02
J'ai rien trouver sur mon phpinfo.

Quelles paramètres sont à verifier ?
-1
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 18:05
opendir / closedir n'a certainement rien à voir.

Ma reco est de revenir à une approche méthodique et progressive :

Commence par essayer un script avec le chemin vers le fichier à détruire en dur :

1. crée un script avec unlink( "toto.txt" );
2. dans le même dossier que ce script crée un fichier toto.txt avec n'importe quoi à l'intérieur
3. exécute le script

Qu'est-ce-que ça donne ? est-ce-que le fichier toto.txt est supprimé ? sinon quel message d'erreur (copié/collé STP)
-1
-CCM- Messages postés 927 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 16 juin 2013 84
16 juil. 2008 à 18:07
comme par hasard c'est exactement ce que je viens de faire !! faut arreté la télépathie !!

 $lien="text.txt";
   unlink($lien);
   
    $lien2=text2.txt;
   unlink($lien2);
   






Notice: Use of undefined constant text2 - assumed 'text2' in C:\Program Files\EasyPHP 2.0b1\www\ad\sup.php on line 127

Notice: Use of undefined constant txt - assumed 'txt' in C:\Program Files\EasyPHP 2.0b1\www\ad\sup.php on line 127

Warning: unlink(text2txt) [function.unlink]: No such file or directory in C:\Program Files\EasyPHP 2.0b1\www\ad\sup.php on line 128


text.txt supprimé
text2.txt toujours la
-1
arthezius Messages postés 3538 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 11 septembre 2016 475
16 juil. 2008 à 18:14
Sinon a quoi correspondent les lignes qu'il t'indique ?
-1