Rechercher : dans
Par :

Supression de fichier en PHP avec unlink(URL)

Dernière réponse le 8 aoû 2008 à 09:24:13 -CCM-, le 16 jui 2008 à 17:03:15 
 Signaler ce message aux modérateurs

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?
Configuration: Windows 3.1.2 workstation edition
Netscape 0.2

Meilleures réponses pour « Supression de fichier en PHP avec unlink(URL) » dans :
Sed - Supprimer une ou plusieurs lignes d'un fichier VoirSupprimer une (ou plusieurs) ligne(s) d'un fichier Syntaxe sed '{[/]||[/]}d' sed '{[/][,][/]d' /.../ = délimiteurs n = le numéro de ligne chaîne = la chaîne contenue dans la...
Supprimer un fichier contenant des caractères spéciaux VoirSi le fichier que vous souhaitez supprimer commence par un caractère "moins" (-), la commande rm risque de prendre la suite comme une option de la ligne de commande. Pour y remédier, une première solution consiste à faire précéder le nom du...
[Windows] Impossible de supprimer un fichier ou un dossier VoirSi Windows n'arrive pas à supprimer un fichier ou un dossier, la cause peut être l'une des suivantes : Le fichier ou le dossier à supprimer est utilisé par un processus du système Le dossier à supprimer contient des fichiers ou dossiers cachés ...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

arthezius, le 16 jui 2008 à 17:29:02

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.
Webmaster indépendant.

Répondre à arthezius

2

croy, le 16 jui 2008 à 17:32:10

Remplace

unlink('$lien');
par
unlink( $lien );

Répondre à croy

3

arthezius, le 16 jui 2008 à 17:35:53

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. Webmaster indépendant.

Répondre à arthezius

4

croy, le 16 jui 2008 à 17:43:27

Il reste que le code donné (unlink( '$lien' );) ne peut pas marcher et que c'est la première chose à modifier.

Répondre à croy

5

-CCM-, le 16 jui 2008 à 17:49:19

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 ...

Répondre à -CCM-

6

arthezius, le 16 jui 2008 à 17:53:04

ça pourrai pas venir des fonctionnalités et extensions de PHP qui ne serai pas activé ?? Webmaster indépendant.

Répondre à arthezius

7

-CCM-, le 16 jui 2008 à 18:02:11

J'ai rien trouver sur mon phpinfo.

Quelles paramètres sont à verifier ?

Répondre à -CCM-

8

croy, le 16 jui 2008 à 18:05:16

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)

Répondre à croy

9

-CCM-, le 16 jui 2008 à 18:07:01

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

Répondre à -CCM-

11

arthezius, le 16 jui 2008 à 18:14:57

Sinon a quoi correspondent les lignes qu'il t'indique ? Webmaster indépendant.

Répondre à arthezius

10

croy, le 16 jui 2008 à 18:11:04

Essaye avec un chemin complet :

unlink( "C:\Program Files\EasyPHP 2.0b1\www\doss\text.txt" );

Répondre à croy

12

-CCM-, le 16 jui 2008 à 18:15:33

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...

Répondre à -CCM-

13

-CCM-, le 16 jui 2008 à 18:21:33
  • +1

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

Répondre à -CCM-

14

-CCM-, le 5 aoû 2008 à 10:50:25

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

Répondre à -CCM-

15

-CCM-, le 5 aoû 2008 à 13:46:08

Je relance donc, je n'ai pas trouver comment exploiter le "false"

Répondre à -CCM-

16

croy, le 7 aoû 2008 à 19:34:03
  • +1

if( file-exists( "../documents/$dossier/$dossier2" ) )
   unlink( "../documents/$dossier/$dossier2" ); 
else
   echo "ce fichier n'existe pas";

Répondre à croy

17

 -CCM-, le 8 aoû 2008 à 09:24:13
  • +1

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+

Répondre à -CCM-
Collection CommentÇaMarche.net